的行列我使用這個代碼來獲得雙字母組頻率:二元語法和單詞
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.狗和具有相同頻率的詞按照降序排列。的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
爲什麼'(''''cat')1' =>'1 3 1' ,?爲什麼「貓」3?不應該是2嗎? (「貓」是你的文本中的第二個詞) – juliomalegria
當我的意思是「等級」時,我的意思是,頻率最高的詞有第一名,第二名有第二名等......這裏的排名是:1。狗和相同頻率的人按照降序排列。 3.cat 4.jumped 5.over ect ... – Julia
如果您有「狗狗狗」,「狗狗」會排在''之前,因爲第一個'狗'在第一個''之前出現' –