我正在尝试计算文本文件中最常见的skip-gram。我正在使用nltk的skipgram和scikit-learn的countVectorizer,但它给了我一个不同的skip-gram的列表。因此,当我将它们放入字典中进行计数时,我得到每个skip-gram的频率= 1。
我相信这是因为我使用的是 vectorizer.vocabulary_ 方法,该方法会跳过重复的skip-gram。
我正在使用此代码https://github.com/nltk/nltk/issues/1428#issuecomment-231647710
在这个原始代码中,他们并没有尝试计算频率,因此不同的skip-gram(词汇)就可以了。就我而言,如何更改代码以便获得 countVectorizer 生成的所有skip-gram 的综合列表?
import functools
from nltk.util import skipgrams
from nltk import word_tokenize
from sklearn.feature_extraction.text import CountVectorizer
text = [word_tokenize(line.strip()) for line in open('test.txt', 'r')]
skipper = functools.partial(skipgrams, n=2, k=2)
vectorizer = CountVectorizer(analyzer=skipper)
vectorizer.fit(text)
vectorizer.vocabulary_
dict = {}
dict = vectorizer.vocabulary_
def getList(dict):
return dict.keys() #get all the skip-grams
#store all skip-grams in a list to count their frequencies
newlist = []
for key in getList(dict):
newlist.append(key)
#count frequency of …Run Code Online (Sandbox Code Playgroud)