NLTK(Natural Language Toolkit)の公式ドキュメントを読みながら、文書の中でよく使われている単語を抽出してみました。とりあえず、サンプルデータから頻出度の高いキーワードを上から3つ順番に表示するところまでやってみましたので、メモがてらに残しておきます。
開発環境
- Python
- NLTK
NLTKのインストール
他のライブラリをしてくのとお馴染みで、まずはpip installします。
$ pip install nltk
高頻度単語を抽出していく
大まかな流れとしては、まず 1) 分かち書きと、品詞を取得する機能をそれぞれダウンロードしたあとに、2) サンプルテキストを読み込んで、読み込んだテキストを分かち書きに変換し、3) 品詞を取得した後に、名詞の単語だけに絞り、最後に、4) 最も使われている上位の単語を3つだけ表示します。
必要な機能のダウンロード
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltkをインポートした後に、分かち書きと、品詞分けをしてくれる機能を公式からダウンロードします。一度環境でダウウンロードすれば、それ以降はダウンロードの必要がありません。ダウンロードしようとすると、Package punkt is already up-to-date!
ってな具合でアラートが出ます。
サンプルテキストを取得して、分かち書きへ変換
raw = open('sample.txt').read()
tokens = nltk.word_tokenize(raw)
text = nltk.Text(tokens)
tokens_l = [w.lower() for w in tokens]
事前に英語のエッセイ、長文を用意します。(sample.txt)これを読み込んだ後に、word_tokenize()
で分かち書きに変換します。その後に、一応小文字、大文字の違いがある場合は同じと認識させる為に、全部小文字にして同じものは同一と認識するようにしています。
品詞を取得した後に名詞のみを抽出
only_nn = [x for (x,y) in pos if y in ('NN')]
freq = nltk.FreqDist(only_nn)
NN(名詞)に該当する品詞のみを抽出して、頻度分布を計算shてくれるFreDist
を使って、頻出回数を数えていきます。
上位3つを表示
print(freq.most_common(3))
Pythonの出現回数をカウントして、多い方から表示する関数most_common()
を使って表示完了です。