在Python中没有字顺序的Bigram频率

时间:2017-10-12 13:48:23

标签: python

我编写了一个程序来查找Python中单词的频率。我被困在一个我需要在不考虑单词顺序的情况下找到双字母组合频率的地方。这意味着“in the”应该与“in in”相同。 找到二元组频率的代码:

txt = open('txt file', 'r') 
finder1 = BigramCollocationFinder.from_words(txt.read().split(),window_size = 3)
finder1.apply_freq_filter(3)
bigram_measures = nltk.collocations.BigramAssocMeasures()

for k,v in sorted(list(combinations((set(finder1.ngram_fd.items())),2)),key=lambda t:t[-1], reverse=True)[:10]:
    print(k,v)

1 个答案:

答案 0 :(得分:1)

这似乎可以使用setsCounter中的密钥。您可以从链接的文档中看到集合是无序容器,计数器是专门用于计算可迭代对象出现次数的字典。看起来像这样:

from string import punctuation as punct

with open('txt file.txt') as txt:
    doc = txt.read().translate({c: '' for c in punct}).split()

c = Counter()

c.update(fronzenset((doc[i], doc[i+1])) for i in range(len(doc) - 1))

with语句处理文件,然后自动关闭连接。从那里它将它读入由空白字符(空格,换行符等)分隔的单词列表。然后它初始化Counter并计算字符串中无序的单词对。