如何判断写入的纯文本文件是什么语言?

Eug*_*neP 25 java nlp

假设我们有一个内容文本文件:"Je suis un beau homme ......"

另一个:"我是一个勇敢的人"

第三个用德语发表文字:"Guten morgen.Wie geht's?"

我们如何编写一个告诉我们的函数:第一个文件中的文本是英文的,第二个文件是英文等等?

欢迎链接到书籍/开箱即用的解决方案.我用Java编写,但如果需要,我可以学习Python.

我的评论

  1. 我需要添加一个小评论.该文本可能包含不同语言的短语,作为整体的一部分或由于错误的结果.在经典文学中,我们有很多例子,因为贵族成员是多语言的.因此,概率更好地描述了情况,因为文本的大多数部分是用一种语言编写的,而其他部分可能用另一种语言编写.
  2. Google API - 互联网连接.我不想使用远程功能/服务,因为我需要自己做或使用可下载的库.我想就这个话题进行研究.

Ott*_*ger 19

有一个名为JLangDetect的包,它似乎完全符合您的要求:

langof("un texte en français") = fr : OK
langof("a text in english") = en : OK
langof("un texto en español") = es : OK
langof("un texte un peu plus long en français") = fr : OK
langof("a text a little longer in english") = en : OK
langof("a little longer text in english") = en : OK
langof("un texto un poco mas largo en español") = es : OK
langof("J'aime les bisounours !") = fr : OK
langof("Bienvenue à Montmartre !") = fr : OK
langof("Welcome to London !") = en : OK
// ...
Run Code Online (Sandbox Code Playgroud)

编辑:正如凯文指出的那样,包org.apache.nutch.analysis.lang提供的Nutch项目中有类似的功能.


Joe*_*oey 5

对于较大的文本corpi,您通常使用字母,有向图甚至三字母的分布,并与您想要检测的语言的已知分布进行比较.

但是,一句话很可能太短,无法产生任何有用的统计措施.然后,您可能有更多的运气将单个单词与字典匹配.