Python:langdetect和langid检测语言类型

需求问题:

前几天,因为工作的需要,要求对爬取的语料进行语种识别,所以在网上查阅了一些资料。在这里跟大家介绍下两个语言检测工具langdetectlangid

1.langid模块

在这里提供一下,官方文档。大家有兴趣的话,可以去研究下。https://github.com/saffsd/langid.py

安装方法也很简单,直接下DOS 命令行输入下面命令:

pip install langid

在这里插入图片描述
langid 模块提供了一个很重要的方法 langid.classify()
该方法返回的结果是元组类型(),元组的第一个参数代表语言类型,第二个参数代表该语言的可信度

代码如下:

import langid

language1 = "今天是2019.11.20号,距离过年还有3个月。加油,加油!!!"
language2 = 'Thanks for his honesty and courage, the truth will not be covered by lies.'
language3 = "Temuan-temuan awal ini masih perlu untuk dikonfirmasi oleh penelitian lebih lanjut"

print(langid.classify(language1))
print(langid.classify(language2))
print(langid.classify(language3))

输出结果如下:

(‘zh’, -259.3397614955902) # zh代表中文
(‘en’, -192.87218618392944) # en 代表英语
(‘id’,-95.6275782585144) # id 代表印尼语

注意下:自己测试了下,语言的检测率还可以,但是效率太慢了。输出的语言类型是参考ISO 639-1语言编码标准。
详情可参考百度百科:ISO 639-1

2.langdetect 模块

安装方法也很简单,在DOS 窗口下输入下面的命令:

pip install langdetect

在这里插入图片描述
langdetect 模块提供了两个很重要的方法。

  • 一个是langdetect .detect() 该方法是检测语言的类型
  • 另外一个是langdetect.detect_langs() 该方法是检测所有语言类型及其所占的比例。

代码如下:

import langdetect
language1 = "今天是2019.11.20号,距离过年还有3个月。加油,加油!!!"
language2 = 'Thanks for his honesty and courage, the truth will not be covered by lies.'
language3 = "Hello,world。Python 生命之旅!!"

print(langdetect.detect(language1))
print(langdetect.detect(language2))
print(langdetect.detect(language3))
print(langdetect.detect_langs(language1))
print(langdetect.detect_langs(language3))

输入结果如下:

zh-cn #中文
en # 英文
en #英文
[zh-cn:0.9999985317701515]
[en:0.8571398609764227, cy:0.14285913702201758] # 在这里 就可以看出来准确率不是很高了

注意:该模块提供的方法速度挺快的,但是,网上有人说,准确率不够。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值