批量检测文本是否为英语
我想找一个简单的方法来判断一小段文字,几句话,是否是英语。对我来说,这个问题似乎比检测任意语言要简单得多。有没有什么软件可以做到这一点?我在用python编程,最好是找一个python的库,但其他的也可以。我试过用谷歌搜索,但后来发现他们的服务条款不允许自动查询。
5 个回答
1
虽然它的效果没有谷歌自己的工具好,但我用Apache Nutch的语言识别功能得到了不错的结果。这个工具自带了一些预训练的ngram模型。我在一个很大的数据集上(50GB,主要是文本的PDF文件)测试了几种语言,结果还挺不错。
这个工具是用Java写的,不过如果你想用Python重新实现它,我相信你可以重新读取它的ngram资料。
4
编辑:在这种情况下,这个方法是行不通的,因为提问者正在批量处理文本,这违反了谷歌的服务条款。
可以使用谷歌翻译的语言检测API。下面是文档中的一个Python示例:
url = ('https://ajax.googleapis.com/ajax/services/language/detect?' +
'v=1.0&q=Hola,%20mi%20amigo!&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP')
request = urllib2.Request(url, None, {'Referer': /* Enter the URL of your site here */})
response = urllib2.urlopen(request)
results = simplejson.load(response)
if results['responseData']['language'] == 'en':
print 'English detected'
11
我看到一种方法可以通过使用三元组来检测英语。
这个方法是,你可以逐字阅读文本,找出其中最常用的三元组。如果这些最常用的三元组和英语中最常用的三元组相匹配,那么这个文本可能是用英语写的。
你可以看看这个Ruby项目: