これは自然言語処理100本ノック2020に挑んだ、とある人間の記録。
他の問題はこちら → 自然言語処理100本ノック2020から逃げるな まとめ
35. 単語の出現頻度
文章中に出現する単語とその出現頻度を求め,出現頻度の高い順に並べよ.
Pythonコード
import NLP100_30 from pprint import pprint def get_morpheme_frequency(): result = {} sentence_list = NLP100_30.get_morpheme() for morpheme_list in sentence_list: for morpheme in morpheme_list: if morpheme['surface'] in result: result[morpheme['surface']] += 1 else: result[morpheme['surface']] = 1 return sorted(result.items(), key=lambda x:x[1], reverse=True) # collections.Counterを使えばもっと楽 if __name__ == "__main__": pprint(get_morpheme_frequency())
30. 形態素解析結果の読み込み で作成したget_morpheme関数を利用しています。
実行結果
長いので冒頭のみ。
[('の', 9194),
('。', 7486),
('て', 6868),
('、', 6772),
('は', 6420),
('に', 6243),
('を', 6071),
('と', 5508),
('が', 5337),
('た', 3988),
('で', 3806),
('「', 3231),
('」', 3225),
('も', 2479),
('ない', 2390),
('だ', 2363),
('し', 2322),
('から', 2032),
('ある', 1728),