
★★★ Live配信告知 ★★★ |
初めまして。新卒です。
本日はjanomeを使い、「形態素解析を行い、文章中に使われている名詞の数を名詞ごとに数える」というプログラムの処理の流れを簡単に説明します。
janomeとはpythonのライブラリの1つで、文章を形態素ごとに分割し、品詞の判定を行うことができます(形態素解析)。
使用したpythonとjanomeのバージョンは以下の通りです。
python | 3.7.8 |
janome | 0.3.10 |
ライブラリのインストール
$ pip install janome
これでjanomeがインストールできます。
形態素解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
from janome.tokenizer import Tokenizer path = './test.txt' #同じディレクトリにtext.txtを配置 file = open(path, encoding="utf-8") #ファイルをオープン Windows or Mac #file = open(path) #ファイルをオープン Mac bindata = file.read()#開いたファイルの読み込み #textdata = bindata.decode('shift_jis') t = Tokenizer() #形態素解析 dic = {} #辞書 #--------------------------------------------------------------------------------------------- lines = bindata.split("\r\n") #改行で分割 手順1 #--------------------------------------------------------------------------------------------- for line in lines: #分割された文章毎に繰り返す #----------------------------------------------------------------------------- malist = t.tokenize(line) #形態素のリスト for w in malist: # リストの各要素を取り出してカウント word = w.surface # 手順2 手順4 part = w.part_of_speech #品詞 if part.find('名詞') < 0: continue #----------------------------------------------------------------------------- if not word in dic: dic[word] = 0 #数を格納するカウンター用の変数を生成 # 手順3 dic[word] += 1 # カウンターを増やす #--------------------------------------------------------------------------------------------- dic = sorted(dic.items(),key = lambda x:x[1], reverse=True) # 手順5 #--------------------------------------------------------------------------------------------- for word, cnt in keys[:20]: print("{0}({1})\n".format(word,cnt), end="") |
処理の流れのイメージ
今回はtest.txtの中に書かれた文章の形態素解析をします。
処理の流れは以下の通りです。
test.txt
↓ 1. 改行で分割する。
↓ 2. 上の行から順に辞書(janomeに内包)を元に形態素ごとに分割する(赤字は名詞)。
↓ 3. 出てきた名詞をdicに入れ、それぞれの名詞の数を数える(赤字は名詞)。
dic
↓ 4. 最後の行が終わるまで2, 3を繰り返す。
dic
↓ 5. 名詞の出てきた回数でソート(降順)する。
dic
まとめ
本日はjanomeを使用し、「形態素解析を行い、文章中に使われている名詞の数を名詞ごとに数える」というプログラムの処理の流れを簡単に説明しました。
janomeを使うことで、形態素解析を非常に簡単に行うことができ、自然言語処理の様々な場面に活躍することになると思います!
ただし注意点が1つあります。WindowsとMacでは文字コードの扱いに差異があるため、ソースコードの5,6行目をお使いのOSに合わせて変えてください。Macであればどちらでも問題ありません。
ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!

>> 雑誌等の執筆依頼を受付しております。
ご希望の方はお気軽にお問い合わせください!
janomeは「くだ」が名詞になっちゃうあたり、ちょっと解析精度が低いんじゃないか、と思うのです。fugashiやsudachipyも、よければ試してみて下さいね。