小编Ing*_*idX的帖子

使用 countVectorizer 计算 Skip-gram 频率

我正在尝试计算文本文件中最常见的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)

python nlp nltk n-gram scikit-learn

5
推荐指数
1
解决办法
701
查看次数

标签 统计

n-gram ×1

nlp ×1

nltk ×1

python ×1

scikit-learn ×1