如何在countVectorizer中使用双字词+卦+单词标记词汇?

时间:2019-05-10 19:00:53

标签: machine-learning nlp text-classification countvectorizer

我将文本分类与朴素贝叶斯和countVectorizer一起用于对方言进行分类。我读了一篇研究论文,作者使用了以下组合:

bigrams + trigrams + word-marks vocabulary 

他在这里用单词标记表示特定于某种方言的单词。

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

文字标记

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

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

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

此外,在这篇文章中: 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与词汇结合使用?他们不是互相排斥吗?

1 个答案:

答案 0 :(得分:2)

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

有关更多详细信息,请参见接受的答案to this question

对于问题的另一部分,请提供“文字标记”示例。

您可能必须运行CountVectorizer两次-一次运行n-gram,一次运行您的自定义单词标记词汇。然后,您可以将两个CountVectorizer的两个输出连接起来,以获得单个功能集的n语法计数和自定义词汇计数。上述问题的答案还解释了如何为CountVectorizer的第二次使用指定自定义词汇。

这是连接数组的SO answer