这个问题已经在这里有一个答案:
- 如何检测一个字符串的语言? 9个回答
有没有能检测出特定的一段文本的语言的任何C#库? 即对于输入文本"This is a sentence"
,它应该检测语言为"English"
。 或为"Esto es una sentencia"
应该检测语言为"Spanish"
。
据我所知,从文字语言检测不确定性问题。 但无论谷歌翻译和必应翻译有一个“自动检测”选项,其中最好的猜测输入语言。 是否有类似的东西可以公开,最好是在C#?
这个问题已经在这里有一个答案:
有没有能检测出特定的一段文本的语言的任何C#库? 即对于输入文本"This is a sentence"
,它应该检测语言为"English"
。 或为"Esto es una sentencia"
应该检测语言为"Spanish"
。
据我所知,从文字语言检测不确定性问题。 但无论谷歌翻译和必应翻译有一个“自动检测”选项,其中最好的猜测输入语言。 是否有类似的东西可以公开,最好是在C#?
确实是这样,TextCat是语言识别非常好。 而且它有很多不同的语言实现的。
有在.NET没有端口。 所以我写了一个: NTextCat ( 的NuGet , 在线演示 )。
它是纯粹的.NET Framework DLL +命令行界面给它。 默认情况下,它使用14种语言的轮廓。
任何反馈非常赞赏! 新思路和功能要求的欢迎太:)
语言检测是做一个相当困难的事情。
一些语言更容易比别人只是由于变音符号和连字/用三合检测。 例如, 双急性口音几乎全部用在匈牙利。 所述无点我 “I”,则使用专用[I认为]在土耳其语,叔逗号(未叔变音符号)被用于仅在罗马尼亚和eszett“SS”在德语中只发生。
一些有向图,三合和四字母也都是不错的赠品。 例如,你很可能会发现“eeuw”和主要在荷兰“ieuw”和“TSCH”和主要在德国的“DSCH”等。
更赠品将包括在特定语言中使用的常用词或共同的前缀/后缀。 有时甚至被用来帮助确定语言(报价风格和用途等)的标点符号。
如果这样的库中存在,我想知道这件事,因为我工作的一个自己。
请查找基于此3克分析的C#实现:
http://idsyst.hu/development/language_detector.html
在这里,您有一个基于二元统计数据(主要是指从一个大的一套双字母组更频繁地出现在各种语言再算上那些在某一段文字,比较之前的检测值学习)一个简单的探测器:
http://allantech.blogspot.com/2007/07/automatic-language-detection.html
这可能是许多(大多数?)应用足够好,不需要上网。
当然,这会比谷歌的或Bing的算法表现较差(这本身不是很大)。 如果你需要优秀的检测性能,你就必须做两很多的辛勤工作和在海量数据。
另一种选择是利用谷歌的或Bing的API,如果你的应用程序能够访问Internet。
您将基于隐马尔可夫链,过程一堆不同语言文本的希望机器学习算法。
然后,当它到达不明的文字,具有更接近“分数”的语言是赢家。
有一个简单的工具来识别文本的语言: http://www.detectlanguage.com/
我发现,“textcat”是这个非常有用的。 我已经使用了PHP实现, PHP文本猫 ,在此基础上这个最初的实现 ,并发现它可靠。 如果你看看源代码,你会发现它不是一个可怕难在你选择的语言来实现的事情。 艰苦的工作 - 的字母组合是相关的特定语言 - 是所有在那里的数据。