特定のタグのコーパスから上位の値を返そうとしています。タグと単語自体を正常に返すことはできますが、出力内でカウントを返すことはできません。
import itertools
import collections
import nltk
from nltk.corpus import brown
words = brown.words()
def findtags(tag_prefix, tagged_text):
cfd = nltk.ConditionalFreqDist((tag, word) for (word, tag) in tagged_text
if tag.startswith(tag_prefix))
return dict((tag, cfd[tag].keys()[:5]) for tag in cfd.conditions())
tagdictNNS = findtags('NNS', nltk.corpus.brown.tagged_words())
これにより、次の罰金が返されます
for tag in sorted(tagdictNNS):
print tag, tagdictNNS[tag]
私はこれを使用してすべてのNNベースの単語のカウントを返すことができました:
pluralLists = tagdictNNS.values()
pluralList = list(itertools.chain(*pluralLists))
for s in pluralList:
sincident = words.count(s)
print s
print sincident
それはすべてを返します。
オカレンスをdictに挿入するより良い方法はありtagdictNN[tag]
ますか?
編集1:
pluralLists = tagdictNNS.values()[:5]
pluralList = list(itertools.chain(*pluralLists))
forsループからサイズ順にそれらを返します。それでもそれを行う正しい方法ではありません。
編集2:実際にNNSの複数形を検索するように辞書を更新しました。