自然言語処理100本ノック2020から逃げるな「35. 単語の出現頻度」

これは自然言語処理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),