私はバイグラムの頻度を取得するには、このコードを使用しています:バイグラムと言葉のランク
text1='the cat jumped over the dog in the dog house'
text=text1.split()
counts = defaultdict(int)
for pair in nltk.bigrams(text):
counts[pair] +=1
for c, pair in ((c, pair) for pair, c in counts.iteritems()):
print pair, c
出力は次のようになります。
('the', 'cat') 1
('dog', 'in') 1
('cat', 'jumped') 1
('jumped', 'over') 1
('in', 'the') 1
('over', 'the') 1
('dog', 'house') 1
('the', 'dog') 2
私は必要なもの、一覧表示するバイグラムのためですが、各単語の代わりに、私は単語のランクを印刷する必要があります。私が「ランク」を意味するとき、最も高い頻度の単語がランク1を持っていて、2番目のランクがランク2を持っていることを意味します...ここでランクは次のとおりです:1.the 2.dogと等しい周波数を持つランクが降順。 3.cat 4.jumped 5.overなど。
例えば
1 3 1
代わりの
('the', 'cat') 1
私はそれは私が単語とそのランクの辞書を必要とするこれを行うには信じていますが、私は立ち往生し、どのように進むべきかを知らない。私は何を持っていることは次のとおりです。
fd=FreqDist()
ranks=[]
rank=0
for word in text:
fd.inc(word)
for rank, word in enumerate(fd):
ranks.append(rank+1)
word_rank = {}
for word in text:
word_rank[word] = ranks
print ranks
「( 'the'、 'cat')1 => '1 3 1' ,? 'cat'はなぜ3であるのですか?それは2ではいけませんか? ( 'cat'はあなたのテキストの2番目の単語です) – juliomalegria
私が「ランク」を意味するときは、最も高い頻度の単語がランク1を持ち、2番目のランクが2ランクです...ここでランクは次のとおりです。犬と同じ頻度のものには降順でランクが割り当てられます。 3.cat 4.jumped 5.over ect ... – Julia
最初の「犬」が最初の「 –