Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';scikit学习标记器是否正确标记utf-8(葡萄牙语)文本?_Python_Python 3.x_Encoding_Utf 8_Scikit Learn - Fatal编程技术网

Python 为什么';scikit学习标记器是否正确标记utf-8(葡萄牙语)文本?

Python 为什么';scikit学习标记器是否正确标记utf-8(葡萄牙语)文本?,python,python-3.x,encoding,utf-8,scikit-learn,Python,Python 3.x,Encoding,Utf 8,Scikit Learn,以下是一些文本,一个numpy数组中只有两个字符串: 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的CountVectorize

以下是一些文本,一个numpy数组中只有两个字符串:

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”,它删除了它无法理解的字符):

cv=CountVectorizer()
简历适合度(标题)
标记器=cv.build\u标记器()
[标题中的标记器]
[onda',
“科莫”,
“眩晕”,
"社会",,
“波德”,
“解释”,
“ac”,##使用默认的
(?u)\b\w\w+\b
参数的
令牌模式

很遗憾,现在
\w
确实如此。但是可能有一个解决方法。我们可以传递以下正则表达式:

cv = CountVectorizer(token_pattern=r'\b(?:[^\s]){2,}\b')

但是我不太熟悉有很多变音符号的语言,以测试这是否适用于所有可能的组合变音符号。

它有一个
标记模式,即
(?u)\b\w\w+\b'
。我不明白。
?u
标志不是让
\w
已经匹配了
ç
ã
之类的东西吗?不是组合的双字符(),你可以交替地使用Unicode规范化来组合表单,例如
将Unicode数据导入为ud;ud。规范化('NFC',ação'))
返回长度为4的字符串。它不适用于任何可以想象的基本字符+变音字符的组合,但普通葡萄牙语文本应该可以。
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']]