※このページではアフィリエイト広告を利用しています

【Python応用】Janomeを用いた出現頻度の解析

Python

ここでは、Janomeを用いた出現頻度の解析方法について解説しています。

この記事の対象

  • 「Janomeとは何か?」を知りたい方
  • 文字列を品詞解析する方法を知りたい方
  • 具体的な品詞解析例を知りたい方
スポンサーリンク
スポンサーリンク

行ったこと

青空文庫のテキストデータ太宰治の「I can speak」を解析しました。

結果として、出現頻度の上位20個とWordCloudでの可視化した結果を載せています。

プログラム

from janome.tokenizer import Tokenizer

#1---テキストデータの指定
txt ="くるしさは、忍従の夜。あきらめの朝。この世とは、あきらめの努めか。わびしさの堪えか。わかさ、かくて、日に虫食われゆき、仕合せも、陋巷ろうこうの内に、見つけし、となむ。-----以下、略"
#2---形態素解析オブジェクトの生成
t = Tokenizer()
#3---テキストを一行ずつ処理
word_txt = {}
lines = txt.split("\r\n")
for line in lines:
    malist = t.tokenize(line)
    for w in malist:
        word = w.surface#4---単語情報の読込
        ps = w.part_of_speech #5---品詞情報の読込
        if ps.find('名詞') < 0: continue #6---名詞のカウント
        if not word in word_txt:
            word_txt[word] = 0
        word_txt[word] += 1 #7---カウント
#8---頻出単語の表示
keys = sorted(word_txt.items(), key=lambda x:x[1], reverse=True)
for word,cnt in keys[:20]:
    print("{0}({1}) ".format(word,cnt), end="")

上記がプログラムになります。

それでは解説していきます。

1の部分はテキストデータを指定しています。

#2---形態素解析オブジェクトの生成
t = Tokenizer()

2の部分ではjanomeの形態素解析オブジェクトを生成しています。

#3---テキストを一行ずつ処理
word_txt = {}
lines = txt.split("\r\n")
for line in lines:
    malist = t.tokenize(line)

3の部分では、はじめにリストを作成し、不要な改行を削除しています。for構文で解析しています。

for w in malist:
        word = w.surface#4---単語情報の読込
        ps = w.part_of_speech #5---品詞情報の読込
        if ps.find('名詞') < 0: continue #6---名詞のカウント
        if not word in word_txt:
            word_txt[word] = 0

4の部分では単語情報のプロパティである「surface」を指定しています。

同時に5の部分では、品詞情報のプロパティである「part_of_speech」を指定しています。

次に6の部分では、名詞だけをカウントしています。

word_txt[word] += 1 #7---カウント

7の部分では、頻出をカウントしています。

#8---頻出単語の表示
keys = sorted(word_txt.items(), key=lambda x:x[1], reverse=True)
for word,cnt in keys[:20]:
    print("{0}({1}) ".format(word,cnt), end="")

8の部分では、解析した内容をソートして上から20個抽出しています。

結果

私(11) 声(6) よう(6) 工場(6) ん(6) 弟(6) 何(5) ひとり(5) の(5) 女工(5) さん(5) 夜(4) 東京(4) もの(4) 仕事(4) それ(4) 甲府(4) I(4) can(4) speak(4)

結果は上記のようになりました。

主題の「I can speak」が出てきていることが分かります。また、私や弟、女工出てきており、人に関する用語も多いことがわかります。

WordCloudでの単語を可視化した結果は以下になります。WordCloudについては下記の関連記事をご参照下さい。

関連記事

項目内容
Word Cloudによるテキストファイルの可視化方法リンク先では、Word Cloudによる可視化方法を解説しています。
タイトルとURLをコピーしました