这是一些文本,在numpy ndarray中只有两个字符串:
titles
>>> array(['"a onda": como a psicologia social pode explicar a ação dos grupos?',
'"beba menos mas beba melhor": entenda o lema da cerveja artesanal'],
dtype=object)
我期望sklearn的CountVectorizer
中的向量化器可以正确分割单词,但似乎并没有(请注意,它未能对单词“ação”进行标记化,它删除了无法理解的字符):< / p>
cv=CountVectorizer()
cv.fit(titles)
tokenizer = cv.build_tokenizer()
[tokenizer(s) for s in titles]
[['onda',
'como',
'psicologia',
'social',
'pode',
'explicar',
'ac', ## <<<< sklearn failed to identify the word "ação"
'dos',
'grupos'],
['beba',
'menos',
'mas',
'beba',
'melhor',
'entenda',
'lema',
'da',
'cerveja',
'artesanal']]
我正在使用sklearn版本 0.21.2 和Python版本 3.6.7 。
答案 0 :(得分:1)
CountVectorizer
[scikit-doc]使用 token_pattern
参数,默认情况下为(?u)\b\w\w+\b
。
不幸的是,\w
现在not capture combining diacritics。但是,可能有一个 。我们可以改为传递以下正则表达式:
cv = CountVectorizer(token_pattern=r'\b(?:[^\s]){2,}\b')
这似乎适用于您输入的内容:
>>> [tokenizer(s) for s in data]
[['onda',
'como',
'psicologia',
'social',
'pode',
'explicar',
'ação',
'dos',
'grupos'],
['beba',
'menos',
'mas',
'beba',
'melhor',
'entenda',
'lema',
'da',
'cerveja',
'artesanal']]
但是我对带有许多变音符号的语言不太熟悉,无法测试这是否适用于所有可能的变音符号。