如何在countVectorizer中使用bigrams + trigrams + word-marks词汇?

How to use bigrams + trigrams + word-marks vocabulary in countVectorizer?

我正在使用带有朴素贝叶斯和 countVectorizer 的文本分类来对方言进行分类。我读了一篇研究论文,作者使用了以下组合:

bigrams + trigrams + word-marks vocabulary 

他这里说的是词标,就是特定方言的词。

如何在 countVectorizer 中调整这些参数?

文字标记

所以这些是文字标记的例子,但我没有,因为我的是阿拉伯语。所以我翻译了它们。

word_marks=['love', 'funny', 'happy', 'amazing']

那些用于对文本进行分类。

此外,在 post 中: Understanding the `ngram_range` argument in a CountVectorizer in sklearn

有这个答案:

>>> v = CountVectorizer(ngram_range=(1, 2), vocabulary={"keeps", "keeps the"})
>>> v.fit_transform(["an apple a day keeps the doctor away"]).toarray()
array([[1, 1]])  # unigram and bigram found

我无法理解输出,这里的 [1,1] 是什么意思?他是如何将 ngram 与词汇一起使用的?两者不是相互排斥的吗?

您想使用 n_gram 范围参数来使用双字母组和三字母组。在您的情况下,它将是 CountVectorizer(ngram_range=(1, 3)).

有关详细信息,请参阅已接受的答案 to this question

请为您问题的另一部分提供 [​​=22=] 的示例。

您可能需要 运行 CountVectorizer 两次 - 一次用于 n-grams 一次用于您的自定义 word-mark 词汇表。然后,您可以连接两个 CountVectorizer 的两个输出,以获得 n-gram 计数和自定义词汇表计数的单个特征集。上述问题的答案还解释了如何为第二次使用 CountVectorizer 指定自定义词汇表。

这里是关于连接数组的SO answer