我正在为一组文本文件构建一个单词频率和相对频率列表。通过手工发现一些文本可以过度影响单词的频率,我想要做的事情之一是计算单词出现的次数。我觉得有两种方法可以做到这一点:
首先,要编译一个单词频率字典(如下所示 - 我不使用NLTK FreqDist,因为这段代码实际上运行得更快但是如果FreqDist内置了上述功能,我只是没有&#39我知道,我会接受它:
import nltk
tokenizer = nltk.tokenize.RegexpTokenizer(r'\w+')
freq_dic = {}
for text in ftexts:
words = tokenizer.tokenize(text)
for word in words:
# form dictionary
try:
freq_dic[word] += 1
except:
freq_dic[word] = 1
从那里开始,我假设我需要编写另一个使用上述键作为关键字的循环:
# This is just scratch code
for text in ftexts:
while True:
if keyword not in line:
continue
else:
break
count = count + 1
然后我会找到一些方法将这两个字典网格化为一个元组,或者可能是一个pandas数据框,这样:
word1, frequency, # of texts in which it occurs
word2, frequency, # of texts in which it occurs
当我写这个问题时,我遇到的另一件事是使用SciKit的术语频率矩阵,然后计算一个单词出现的行?这可能吗?
添加到CLARIFY:
想象三句话: ["我需要记住孩子的数量。", "如果你想知道点数是什么,那就问问。" "这里没有鸡,鸡,鸡。"]
"计数"发生2次,但有两种不同的文字; "鸡"发生三次,但只有一个文本。我想要的是一份如下所示的报告:
WORD, FREQ, TEXTS
count, 2, 2
chicken, 3, 1