语言检测

10 投票
3 回答
2275 浏览
提问于 2025-04-17 07:03

有没有人有经验可以用Python来判断一段文字的语言?Python里有没有现成的模块可以做到这一点?

我之前试过谷歌的一个应用(http://ajax.googleapis.com/ajax/services/language/detect),效果不错,但我不能长期使用它来处理大量的文本文件。

3 个回答

0

有一个叫做 语言检测API 的东西,你可以通过Python来使用它,像用网络服务一样。你可以通过GET或POST的方式发送文本,然后它会给你返回一个JSON格式的结果,里面包含一些分数。

3

有一个官方的Python接口可以用来操作CLD3神经网络模型,这个模型是Chrome用来离线检测语言的。

sudo apt install -y protobuf-compiler
pip install gcld3

就我用过的Google的所有Python代码来说,它们都不太符合Python的风格,使用起来也挺麻烦的,不过至少效果还不错:

>>> import gcld3
>>> lang_identifier = gcld3.NNetLanguageIdentifier(0, 1000)
>>> lang_identifier.Find
lang_identifier.FindLanguage(           lang_identifier.FindTopNMostFreqLangs(  
>>> a = lang_identifier.FindLanguage("This is a test")
>>> a
<gcld3.pybind_ext.Result object at 0x7f606e0ec3b0>
>>> a.
a.is_reliable  a.language     a.probability  a.proportion   
>>> a.language
'en'
>>> a = lang_identifier.FindTopNMostFreqLangs("This piece of text is in English. Този текст е на Български.", 5)
>>> a
[<gcld3.pybind_ext.Result object at 0x7f606e0ec4b0>, <gcld3.pybind_ext.Result object at 0x7f606e0ec570>, <gcld3.pybind_ext.Result object at 0x7f606e0ec470>, <gcld3.pybind_ext.Result object at 0x7f606e0ec5b0>, <gcld3.pybind_ext.Result object at 0x7f606e0ec530>]
>>> [r.language for r in a]
['bg', 'en', 'und', 'und', 'und']

你也可以试试这个非官方的Python接口,链接是https://github.com/bsolomon1124/pycld3

3

我没试过这个,但看起来你可以用 NLTK(自然语言工具包)来实现。你可以看看这篇 博客文章,里面有个例子。

下面这个问题的答案也可能对你有帮助: NLTK 和语言检测

撰写回答