检测文字语言

有没有可以检测特定文本语言的C#库? 即对于输入文本"This is a sentence" ,它应该将语言检测为"English" 。 或者对于"Esto es una sentencia"它应该将语言检测为"Spanish"

我理解从文本中检测语言不是一个确定性的问题。 但Google Translate和Bing Translator都有一个“自动检测”选项,可以最好地猜测输入语言。 是否有公开的类似内容,最好是在C#中?

是的,TextCat非常适合语言识别。 它有很多不同语言的实现。

.Net中没有端口。 所以我写了一篇: NTextCat ( NuGet , 在线演示 )。

它是纯.NET Framework DLL +命令行界面。 默认情况下,它使用14种语言的配置文件。

任何反馈都非常感谢! 欢迎新的想法和function要求:)

语言检测是一件非常困难的事情。

有些语言比其他语言更易于检测,仅仅是因为使用了变音符号和有向图/三字符。 例如, 双重急性口音几乎全部用于匈牙利语。 dotless i’ı ‘在土耳其语专用[我认为],t-comma(不是t-cedilla)仅在罗马尼亚语中使用,而eszett’ß’仅在德语中使用。

一些有向图,三字母和四字图也是一个很好的赠品。 例如,你最有可能发现’eeuw’和’ieuw’主要用荷兰语,’tsch’和’dsch’主要用德语等。

更多赠品将包括在特定语言中使用的常用词或共同前缀/后缀。 有时甚至使用的标点符号也可以帮助确定语言(引用样式和使用等)。

如果这样的图书馆存在,我想知道它,因为我自己在做一个。

在这里你有一个基于bigram统计数据的简单检测器(基本上意味着从一个大集合中学习,每个语言上更频繁地出现bigrams,然后在一段文本中计算,与之前检测到的值相比):

http://allantech.blogspot.com/2007/07/automatic-language-detection.html

这对于许多(大多数?)应用程序来说可能已经足够好了,并且不需要Internet访问。

当然,它的性能会比谷歌或Bing的算法更差(它们本身并不好)。 如果您需要出色的检测性能,您将不得不做很多艰苦的工作和大量的数据。

如果您的应用可以访问互联网,则另一种选择是利用Google或Bing API。

请在此处找到基于3grams分析的C#实现:

http://idsyst.hu/development/language_detector.html

你需要一种基于隐马尔可夫链的机器学习算法,处理一堆不同语言的文本。

然后,当它到达未识别的文本时,具有更接近“得分”的语言是赢家。

有一个简单的工具来识别文本语言: http : //www.detectlanguage.com/

我发现“textcat”对此非常有用。 我已经使用PHP实现, PHP Text Cat ,基于这个原始实现 ,并发现它可靠。 如果你看一下这些来源,你会发现用你选择的语言实现它并不是一件非常困难的事情。 艰苦的工作 – 与特定语言相关的字母组合 – 都在那里作为数据。