Janomeを使った形態素解析②
■単語ごとに分けた辞書を作る
Tokenオブジェクトの中から必要な属性を取り出してリスト化する。
data = [] from janome.tokenizer import Tokenizer t = Tokenizer() token_list = t.tokenize("今日はいい天気ですね。") for token in token_list: surface = token.surface base = token.base_form part_of_speech = token.part_of_speech.split(',')[0] part_of_speech_1 = token.part_of_speech.split(',')[1] datum = { '表層形':surface, '基本形':base, '品詞':part_of_speech, '品詞細分類1':part_of_speech_1, } data.append(datum) data
[{'表層形': '今日', '基本形': '今日', '品詞': '名詞', '品詞細分類1': '副詞可能'},
{'表層形': 'は', '基本形': 'は', '品詞': '助詞', '品詞細分類1': '係助詞'},
{'表層形': 'いい', '基本形': 'いい', '品詞': '形容詞', '品詞細分類1': '自立'},
{'表層形': '天気', '基本形': '天気', '品詞': '名詞', '品詞細分類1': '一般'},
{'表層形': 'です', '基本形': 'です', '品詞': '助動詞', '品詞細分類1': '*'},
{'表層形': 'ね', '基本形': 'ね', '品詞': '助詞', '品詞細分類1': '終助詞'},
{'表層形': '。', '基本形': '。', '品詞': '記号', '品詞細分類1': '句点'}]
※辞書型リストにする別の方法※
dict(key=値, key=値, ....)を使う
data.append(dict(表層形=surface, 基本形=base, 品詞=part_of_speech, 品詞細分類1=part_of_speech_1))
■単語の出現回数をカウントする
まずは基本形のリストを作る。
base_list = [] for i in range(len(data)): base_list.append(data[i]['基本形']) base_list
['今日', 'は', 'いい', '天気', 'です', 'ね', '。']
次に「defaultdict」を使ってカウントする。
※defaultdict→存在しないキーは新しいキーとして生成しながら辞書を作ってくれる。
(defautdictの引数=初期化時に実行する関数。今回は0を返す関数=「lambda:0」または「int」)
from collections import defaultdict d = defaultdict(lambda: 0) for key in base_list: d[key] += 1 d
defaultdict(int, {'今日': 1, 'は': 1, 'いい': 1, '天気': 1, 'です': 1, 'ね': 1, '。': 1})
(※キーのデフォルトは0で、一度出現する度に数値が増えていくプログラムになっている)