我想计算文本中最常用的单词或两个单词的组合(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
您有什么建议吗?预先感谢!