双字母组的频率分布
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(" "))]
我做了以下事情
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(" "))]