确定文本是否为英文

时间:2014-03-03 07:49:22

标签: c# translation

我目前在我的数据库中有很多评论和文字,主要是英文。但是,如果它不是英文,我想把它翻译成英文。

我知道我可以拨打翻译api来确定语言,但我不想为最有可能不需要翻译的文字拨打数百万个翻译API。

我正在寻找一种方法来确定文本是否为英文。我不需要知道它是什么语言,只是它不是英语,如果它不是英语,我会把它发送到翻译服务API。

4 个答案:

答案 0 :(得分:2)

您可以使用NTextCat来确定输入语言。

答案 1 :(得分:1)

研究(由Certf Zipf)确定,在大多数情况下,有一些词语经常使用,而且很多词语很少使用。

如果我遇到这个问题,我可能会记下前X个用词的列表。然后,对于每个评论,我会看到是否匹配。

它并不完美(如果文字非常特别,或者是误导,你就会遇到问题) - 但我认为这是一种可接受的启发式方法。

答案 2 :(得分:1)

Chromium项目(包括其最受欢迎的实施方案,谷歌浏览器)使用https://github.com/CLD2Owners/cld2解决了这个问题。

如果你唯一的需要是检测某些东西是否是英文,那么理论上你可以使用更紧凑的东西。

大多数优秀的语言检测器使用三字母频率(一个字是单个字符)或三字频率覆盖字频率。对于你的应用程序,似乎你可以使用混合方法,其中第一次传递是本地的,但是准确度低并且调整为有点积极以至于不会错过任何潜在的英语,并且第二次传递确实击中了像谷歌翻译这样的API。

英语的普及和英语数据的数量通常有助于将NLP解决方案应用于此,但在这种情况下,您很可能会发现英语误报,因为列为英语的数据源包含其他语言或联合国 - 像垃圾字符或URL一样的语言。

另请注意,对于许多查询,没有单一的正确答案。好的系统将返回加权的可能性列表,但对于像[dan],[a],[example@example.com]或[hi! como estas?我在课堂上ahorita]最正确的答案取决于你的申请,可能不存在。

答案 3 :(得分:-1)

请参阅此post

更具体地说,请查看Trigrams