sklearn 中的 countvectorizer 仅适用于英语吗?
Is countvectorizer in sklearn only meant for English?
我正在尝试为印度语的泰卢固语和印地语应用计数矢量化器language.But矢量化器正在自动提取词干。
count_vect = CountVectorizer()
xv=count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()
输出结果如下:
['girl',
'good',
'is',
'she',
'दर',
'बह',
'అధ',
'ఇద',
'ఎక',
'చదగ',
'డట',
'డవచ',
'తనత',
'నద',
'ఫన',
'భర',
'మర',
'రమ',
'లక',
'వగ',
'సన']
很明显它会自动截断泰卢固语和印地语词,有什么办法可以避免吗?
CountVectorizer()
使用的分析器似乎不支持某些编码。您可以定义自定义分析器,以定义如何分隔单词。要正确分隔单词,您可以使用正则表达式:
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
module because it supports more encodings than the module re
(Thanks to this answer来解释)。
我正在尝试为印度语的泰卢固语和印地语应用计数矢量化器language.But矢量化器正在自动提取词干。
count_vect = CountVectorizer()
xv=count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()
输出结果如下:
['girl',
'good',
'is',
'she',
'दर',
'बह',
'అధ',
'ఇద',
'ఎక',
'చదగ',
'డట',
'డవచ',
'తనత',
'నద',
'ఫన',
'భర',
'మర',
'రమ',
'లక',
'వగ',
'సన']
很明显它会自动截断泰卢固语和印地语词,有什么办法可以避免吗?
CountVectorizer()
使用的分析器似乎不支持某些编码。您可以定义自定义分析器,以定义如何分隔单词。要正确分隔单词,您可以使用正则表达式:
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
module because it supports more encodings than the module re
(Thanks to this answer来解释)。