双字母组的频率分布

Frequency Distribution of Bigrams

我做了以下事情

import nltk


words = nltk.corpus.brown.words()
freq = nltk.FreqDist(words)

并且能够找到棕色语料库中某些词的频率,比如

freq["the"]
62713

但现在我希望能够找到特定二元组的频率分布。然后我尝试了

bigrams = nltk.bigrams(words)
freqbig = nltk.FreqDist(bigrams)

但是我输入的每个二元组,我总是得到 0。比如,

freqbig["the man"]
0

我做错了什么?

它接受 tuple 作为键,而不是 str:

freqbig[("the", "man")]

输出

128

如果你想传递字符串,你可以创建一个辅助函数来处理它:

def get_frequency(my_string):
    return freqbig[tuple(my_string.split(" "))]