gpt4 book ai didi

python - 为什么 scikit 学习分词器不能正确分词 utf-8(葡萄牙语)文本?

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:24 28 4
gpt4 key购买 nike

这是一些文本,只是 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”,它丢弃了它无法理解的字符):

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

最佳答案

CountVectorizer [scikit-doc]使用 token_pattern 参数,默认为 (?u)\b\w\w+\b

现在 \w 不幸的是 not capture combining diacritics .不过,可能 有一种解决方法。我们可以改为传递以下正则表达式:

cv = CountVectorizer(token_pattern=<b>r'\b(?:[^\s]){2,}\b'</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']]

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

关于python - 为什么 scikit 学习分词器不能正确分词 utf-8(葡萄牙语)文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com