我正在测试Python中的polyglot
包,以检测混合语言文档中的语言。
我不期望它有最准确的预测,但是从软件包开始,它不会返回任何内容,而是返回一种语言作为答案,即使对于其中包含2种或3种语言的文本也是如此。
我正在使用的文本平均有20个单词,例如:
text = 'Je travaillais en France. Je suis tres heureux. I work in London. I grew up in Manchester.'
我总是收到类似以下的内容-没有多种语言的答案:
Prediction is reliable: True
Language 1: name: English code: en confidence: 98.0 read bytes: 682
Language 2: name: un code: un confidence: 0.0 read bytes: 0
Language 3: name: un code: un confidence: 0.0 read bytes: 0
在文档中example的位置不远:
> China (simplified Chinese: 中国; traditional Chinese: 中國),
>
> name: English code: en confidence: 71.0 read bytes: 887
> name: Chinese code: zh_Hant confidence: 11.0 read bytes: 1755
> name: un code: un confidence: 0.0 read bytes: 0
尽管说实话,当我使用上面的中英文示例运行检测器时,我确实得到了多种语言的答案。
代码如下:
from polyglot.detect import Detector
text = 'Je travaillais en France. Je suis tres heureux. I work in London. I grew up in Manchester.'
answer = Detector(text)
print(answer)
为什么会这样?
PS
此外,在检测到一个单词(甚至很常见)polyglot
的语言的情况下,情况也很糟糕。
例如,单词quantita
(意大利语)会返回英语。
我知道这些程序包中的许多程序在具有较大的文本时都可以成功使用,但是令人惊讶的是,即使这些简单的单词也无法捕获。
Textblob
似乎只用一个单词就可以了,但是您可以向它发送数量非常有限的请求(在两种情况下,可能都是因为它使用了Google API)。 >
答案 0 :(得分:-1)
我认为Polyglot通过阅读文本中使用的字符来检测语言。 您上面提到的示例都是用英语(音译)编写的。单词是否是法语,意大利语,西班牙语,中文等都无关紧要。langaueg。由于它是使用英语字符集编写的,因此将全部检测为英语。
因此,Polyglot仅适用于其中使用非拉丁字符的语言,例如希腊语,俄语,阿拉伯语或中文。
这就是为什么在以下情况下您也会使用中文的原因,因为中文字符很少,而拉丁字符更多,所以信心较低:
China(简体中文:中国;繁体中文:中国)
名称:英文代码:en可信度:71.0阅读字节:887 名称:中文代码:zh_Hant信心:11.0阅读字节:1755 名称:联合国代码:联合国信心:0.0读取字节:0