将CountVectorizer用于ngram_range =(1、2)时避免重复计算

时间:2019-04-17 15:34:21

标签: python scikit-learn countvectorizer

我想计算文本中最常用的单词或两个单词的组合(ngram_range =(1,2))。我想“偏爱”任何2克组合,这样一个单词的出现就只计算一次。

但是,下面的代码对一个单词的出现进行两次计数。例如。考虑“保留的权利”一词。我不希望在“保留的权利”中对一次(1克)出现的“权利”一词进行计数,而对于“ 2克的出现”又对2克的出现进行计数,以使“权利”的总数为2。 >

text = 'The digital transformation needs digital products so that the digital transformation can be succesful.'

ngram_vectorizer = CountVectorizer(analyzer='word', decode_error='ignore', ngram_range=(1, 2), min_df=1, stop_words='english', lowercase=True)

X = ngram_vectorizer.fit_transform(text)
vocab = ngram_vectorizer.get_feature_names()                           
counts = X.sum(axis=0).A1                                              
freq_distribution = Counter(dict(zip(vocab, counts)))                  
topcounts = dict(freq_distribution.most_common(4))

以上代码的输出将产生以下最高计数: 数字:3;数字化转型:2,需求:1,产品:1

但是,我希望获得以下结果: 数字化转型:2,数字化:1,需求:1,产品:1

您有什么建议吗?预先感谢!

0 个答案:

没有答案