我使用文本分类与朴素贝叶斯和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的呢?它们不都是相互排斥的吗?
发布于 2019-05-11 08:41:56
您希望使用n_gram范围参数来使用二元语法和三元语法。在您的例子中,它应该是CountVectorizer(ngram_range=(1,3))。
有关详细信息,请参阅accepted to this question。
请为你问题的另一部分提供“单词标记”的例子。
您可能必须运行CountVectorizer两次-一次用于n-gram,一次用于自定义单词标记词汇表。然后,您可以连接来自两个CountVectorizers的两个输出,以获得n元语法计数和自定义词汇表计数的单个特征集。上面问题的答案还解释了如何为第二次使用CountVectorizer指定自定义词汇表。
下面是一个关于连接数组的SO answer
https://stackoverflow.com/questions/56083449
复制相似问题