批量检测文本是否为英语

8 投票
5 回答
7624 浏览
提问于 2025-04-16 09:26

我想找一个简单的方法来判断一小段文字,几句话,是否是英语。对我来说,这个问题似乎比检测任意语言要简单得多。有没有什么软件可以做到这一点?我在用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项目:

https://github.com/feedbackmine/language_detector

撰写回答