sklearn中的countvectorizer是否只适用于英语?

问题描述 投票:0回答:1

我想在泰卢固语和印地语中应用计数向量器,但向量器会自动对单词进行分词。

count_vect = CountVectorizer()
xv=count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()

输出结果如下。

['girl',
 'good',
 'is',
 'she',
 'दर',
 'बह',
 'అధ',
 'ఇద',
 'ఎక',
 'చదగ',
 'డట',
 'డవచ',
 'తనత',
 'నద',
 'ఫన',
 'భర',
 'మర',
 'రమ',
 'లక',
 'వగ',
 'సన']

很明显,它自动将泰卢固语和印地语的词干化,有什么办法可以避免吗?

python machine-learning scikit-learn nlp nltk
1个回答
3
投票

使用的分析器 CountVectorizer() 似乎很不支持某些编码。你可以定义一个自定义的分析器,来定义如何分离单词。为了正确地分离单词,你可以使用一个regex。

import regex 

def custom_analyzer(text):
    words = regex.findall(r'\w{2,}', text) # extract words of at least 2 letters
    for w in words:
        yield w

count_vect = CountVectorizer(analyzer = custom_analyzer)
xv = count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()

我用的是 regex 模块 因为它比模块支持更多的编码。re (感谢这个 回答 用于解释)。)

© www.soinside.com 2019 - 2024. All rights reserved.