Python初心者が形態素解析ライブラリ「Janome」を使ってみる

スポンサーリンク

Python初心者が形態素解析ライブラリJanomeを使ってみます。

Janomeはパッケージのインストールが簡単だということで、初心者でも使いやすいと思い、今回使ってみることにした。

■環境

Google Colaboratory

■Janomeのインストール

pip install janome

Google Colaboratoryには、Janomeのパッケージがインストールされていませんので、pipを経由してインストールを行いますので、上記のコードを記述し、ENTERキーを押します。

Collecting janome
Downloading https://files.pythonhosted.org/packages/○○.whl (○○.○MB)
|████████████████████████████████| ○○.○MB ○.○MB/s
Installing collected packages: janome
Successfully installed janome-0.3.10

ENTERキーを押すと、上記のようなメッセージが表示され「Successfully installed janome-0.3.10(janome-0.3.10が正常にインストールされました)」と表示されますので、これでインストールが完了します。

■コード

from janome.tokenizer import Tokenizer

t = Tokenizer()

text = 'アレキサンダー君は、その自ら名告るところに依れば、旧露国帝室付舞踏師で、革命後上海から日本へ渡って来たのだが、踊を以て生業とすることが出来なくなって、今では銀座裏の、西洋料理店某でセロを弾いていると云う、つまり街頭で、よく見かける羅紗売りより僅かばかり上等な類のコーカサス人である。'

for token in t.tokenize(text):
    print(token)

janomeのライブラリをテストするために、上記のコードを記述。

TokenizerをimportしてTokenizerオブジェクトのインスタンス(実体化)を作成する。インスタンスを作成し、形態素解析したい文字列(text)をtokenizeメソッドに渡しています。

今回、形態素解析したい文字列は、著作権の切れている作品は自由に複製できる「青空文庫」で、著作権の切れている作品のデータを利用して、形態素解析をやってみます。

■実行

プログラムを実行してみます。

アレキサンダー 名詞,一般,*,*,*,*,アレキサンダー,*,*
君 名詞,接尾,人名,*,*,*,君,クン,クン
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 記号,読点,*,*,*,*,、,、,、
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
自ら 名詞,副詞可能,*,*,*,*,自ら,ミズカラ,ミズカラ
名 名詞,接尾,一般,*,*,*,名,メイ,メイ
告 名詞,固有名詞,地域,一般,*,*,告,ツゲ,ツゲ
る 助動詞,*,*,*,文語・リ,体言接続,り,ル,ル
ところ 名詞,非自立,副詞可能,*,*,*,ところ,トコロ,トコロ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
依れ 動詞,自立,*,*,五段・ラ行,仮定形,依る,ヨレ,ヨレ
ば 助詞,接続助詞,*,*,*,*,ば,バ,バ
、 記号,読点,*,*,*,*,、,、,、
旧 接頭詞,名詞接続,*,*,*,*,旧,キュウ,キュー
露 名詞,固有名詞,地域,国,*,*,露,ロ,ロ
国 名詞,接尾,一般,*,*,*,国,コク,コク
帝室 名詞,一般,*,*,*,*,帝室,テイシツ,テイシツ
付 名詞,接尾,一般,*,*,*,付,ヅケ,ズケ
舞踏 名詞,サ変接続,*,*,*,*,舞踏,ブトウ,ブトー
師 名詞,接尾,一般,*,*,*,師,シ,シ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
、 記号,読点,*,*,*,*,、,、,、
革命 名詞,一般,*,*,*,*,革命,カクメイ,カクメイ
後 名詞,接尾,副詞可能,*,*,*,後,ゴ,ゴ
上海 名詞,固有名詞,地域,一般,*,*,上海,シャンハイ,シャンハイ
から 助詞,格助詞,一般,*,*,*,から,カラ,カラ
日本 名詞,固有名詞,地域,国,*,*,日本,ニッポン,ニッポン
へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ
渡っ 動詞,自立,*,*,五段・ラ行,連用タ接続,渡る,ワタッ,ワタッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
来 動詞,非自立,*,*,カ変・来ル,連用形,来る,キ,キ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
の 名詞,非自立,一般,*,*,*,の,ノ,ノ
だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
が 助詞,接続助詞,*,*,*,*,が,ガ,ガ
、 記号,読点,*,*,*,*,、,、,、
踊 名詞,一般,*,*,*,*,踊,オドリ,オドリ
を以て 助詞,格助詞,連語,*,*,*,を以て,ヲモッテ,ヲモッテ
生業 名詞,一般,*,*,*,*,生業,セイギョウ,セイギョー
と 助詞,格助詞,一般,*,*,*,と,ト,ト
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
こと 名詞,非自立,一般,*,*,*,こと,コト,コト
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
出来 動詞,自立,*,*,一段,未然形,出来る,デキ,デキ
なく 助動詞,*,*,*,特殊・ナイ,連用テ接続,ない,ナク,ナク
なっ 動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
今 名詞,副詞可能,*,*,*,*,今,イマ,イマ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
銀座 名詞,固有名詞,地域,一般,*,*,銀座,ギンザ,ギンザ
裏 名詞,一般,*,*,*,*,裏,ウラ,ウラ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
、 記号,読点,*,*,*,*,、,、,、
西洋 名詞,一般,*,*,*,*,西洋,セイヨウ,セイヨー
料理 名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
店 名詞,接尾,一般,*,*,*,店,テン,テン
某 名詞,一般,*,*,*,*,某,ボウ,ボー
で 助詞,格助詞,一般,*,*,*,で,デ,デ
セロ 名詞,一般,*,*,*,*,セロ,セロ,セロ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
弾い 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,弾く,ヒイ,ヒイ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
と 助詞,格助詞,引用,*,*,*,と,ト,ト
云う 動詞,自立,*,*,五段・ワ行促音便,基本形,云う,イウ,イウ
、 記号,読点,*,*,*,*,、,、,、
つまり 接続詞,*,*,*,*,*,つまり,ツマリ,ツマリ
街頭 名詞,一般,*,*,*,*,街頭,ガイトウ,ガイトー
で 助詞,格助詞,一般,*,*,*,で,デ,デ
、 記号,読点,*,*,*,*,、,、,、
よく 副詞,一般,*,*,*,*,よく,ヨク,ヨク
見かける 動詞,自立,*,*,一段,基本形,見かける,ミカケル,ミカケル
羅紗 名詞,一般,*,*,*,*,羅紗,ラシャ,ラシャ
売り 動詞,自立,*,*,五段・ラ行,連用形,売る,ウリ,ウリ
より 助詞,格助詞,一般,*,*,*,より,ヨリ,ヨリ
僅か 名詞,形容動詞語幹,*,*,*,*,僅か,ワズカ,ワズカ
ばかり 助詞,副助詞,*,*,*,*,ばかり,バカリ,バカリ
上等 名詞,形容動詞語幹,*,*,*,*,上等,ジョウトウ,ジョートー
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
類 名詞,一般,*,*,*,*,類,ルイ,ルイ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
コーカサス 名詞,一般,*,*,*,*,コーカサス,*,*
人 名詞,接尾,一般,*,*,*,人,ジン,ジン
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。

実行し、print()で出力された結果が上記である。「アレキサンダー」が「名詞,一般」、「銀座」が「名詞,固有名詞,地域,一般」などと解析されているので、精度は高いと感じた。

■Tokenオブジェクトの属性から特定の情報を抜き出してみる

from janome.tokenizer import Tokenizer

t = Tokenizer()

text = 'アレキサンダー君は、その自ら名告るところに依れば、旧露国帝室付舞踏師で、革命後上海から日本へ渡って来たのだが、踊を以て生業とすることが出来なくなって、今では銀座裏の、西洋料理店某でセロを弾いていると云う、つまり街頭で、よく見かける羅紗売りより僅かばかり上等な類のコーカサス人である。'

for token in t.tokenize(text):
    print(token)

上記のプログラムの場合は、print()で結果を出力する際は一括で出力されるが、Tokenオブジェクトの属性から特定の情報を抜き出すこともできる。

■コード

from janome.tokenizer import Tokenizer


t = Tokenizer()


text = 'アレキサンダー君は、その自ら名告るところに依れば、旧露国帝室付舞踏師で、革命後上海から日本へ渡って来たのだが、踊を以て生業とすることが出来なくなって、今では銀座裏の、西洋料理店某でセロを弾いていると云う、つまり街頭で、よく見かける羅紗売りより僅かばかり上等な類のコーカサス人である。'


for token in t.tokenize('アレキサンダー'):
    print(token)

上記のプログラムで、Tokenオブジェクトの属性から「アレキサンダー」という情報を取得してみる。

■実行

アレキサンダー 名詞,固有名詞,組織,*,*,*,アレキサンダー,*,*

プログラムを実行してみると、「アレキサンダー」という情報が解析され出力された。

コメント

タイトルとURLをコピーしました