複数のテキストがあり、名詞や動詞などのさまざまな品詞の使用法に基づいて、それらのプロファイルを作成したいと考えています。基本的に、各品詞が何回使用されているかを数える必要があります。
テキストにタグを付けましたが、さらに進む方法がわかりません:
tokens = nltk.word_tokenize(text.lower())
text = nltk.Text(tokens)
tags = nltk.pos_tag(text)
各品詞のカウントを変数に保存するにはどうすればよいですか?
複数のテキストがあり、名詞や動詞などのさまざまな品詞の使用法に基づいて、それらのプロファイルを作成したいと考えています。基本的に、各品詞が何回使用されているかを数える必要があります。
テキストにタグを付けましたが、さらに進む方法がわかりません:
tokens = nltk.word_tokenize(text.lower())
text = nltk.Text(tokens)
tags = nltk.pos_tag(text)
各品詞のカウントを変数に保存するにはどうすればよいですか?
このpos_tagメソッドは、(トークン、タグ) ペアのリストを返します。
tagged = [('the', 'DT'), ('dog', 'NN'), ('sees', 'VB'), ('the', 'DT'), ('cat', 'NN')]
Python 2.7 以降を使用している場合は、次のように簡単に実行できます。
>>> from collections import Counter
>>> counts = Counter(tag for word,tag in tagged)
>>> counts
Counter({'DT': 2, 'NN': 2, 'VB': 1})
カウントを正規化するには (それぞれの比率を得る)、次のようにします。
>>> total = sum(counts.values())
>>> dict((word, float(count)/total) for word,count in counts.items())
{'DT': 0.4, 'VB': 0.2, 'NN': 0.4}
古いバージョンの Python では、自分で実装する必要があることに注意してCounterください。
>>> from collections import defaultdict
>>> counts = defaultdict(int)
>>> for word, tag in tagged:
... counts[tag] += 1
>>> counts
defaultdict(<type 'int'>, {'DT': 2, 'VB': 1, 'NN': 2})