检测文本语言

时间:2009-09-23 07:00:38

标签: c# language-detection

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

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

7 个答案:

答案 0 :(得分:29)

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

.Net中没有端口。所以我写了一个:NTextCatNuGetOnline Demo)。

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

非常感谢任何反馈!我们也欢迎新的想法和功能要求:)

答案 1 :(得分:3)

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

有些语言比其他语言更易于检测,原因很简单,因为使用了变音符号和有向图/三字符。例如,double-acute accents几乎全部用于匈牙利语。 dotless i'ı'在土耳其语专用[我认为],t-comma(非t-cedilla)仅在罗马尼亚语中使用,而eszett'ß'仅在德语中使用。

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

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

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

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

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

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

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

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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