我将文本分类与朴素贝叶斯和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与词汇结合使用?他们不是互相排斥吗?
答案 0 :(得分:2)
您要使用n_gram范围参数来使用双字母组和三字母组。在您的情况下,它将是CountVectorizer(ngram_range =(1,3))。
有关更多详细信息,请参见接受的答案to this question。
对于问题的另一部分,请提供“文字标记”示例。
您可能必须运行CountVectorizer两次-一次运行n-gram,一次运行您的自定义单词标记词汇。然后,您可以将两个CountVectorizer的两个输出连接起来,以获得单个功能集的n语法计数和自定义词汇计数。上述问题的答案还解释了如何为CountVectorizer的第二次使用指定自定义词汇。
这是连接数组的SO answer