【发布时间】:2010-11-25 21:24:33
【问题描述】:
我有一组两种语言的文档:英语和德语。这些文档没有可用的元信息,程序只能查看内容。基于此,程序必须决定文档是用两种语言中的哪一种编写的。
对于这个问题,是否有任何“标准”算法可以在几个小时内实现?或者,一个可以做到这一点的免费 .NET 库或工具包?我知道LingPipe,但它是
- Java
- “半商业”用途并非免费
这个问题似乎出奇的难。我查看了Google AJAX Language API(我首先通过搜索此站点找到了它),但它非常糟糕。对于我指出的六个德语网页,只有一个猜测是正确的。其他的猜测是瑞典语、英语、丹麦语和法语......
我想出的一个简单方法是使用停用词列表。我的应用程序已经使用这样的德语文档列表,以便使用 Lucene.Net 分析它们。如果我的应用程序扫描文档以查找任何一种语言中出现的停用词,那么出现次数较多的将获胜。可以肯定的是,这是一种非常幼稚的方法,但它可能就足够了。不幸的是,我没有时间成为自然语言处理方面的专家,尽管这是一个有趣的话题。
【问题讨论】:
-
只需在文件中搜索“ß”、“ä”、“ë”、“ö”或“ü”字符。其他需要注意的有用关键字是“Lebensraum”、“Sauerkraut”和“Donaudampfschifffahrtsgesellschaftskapitän”,除了开玩笑,这可能是最好的解决方案。只需编制两种语言的常用词列表并测量最大的重叠。
-
另一个想法,在德语中,名词大写。如果您发现很多以空格开头的大写字符,那么您很可能正在查看一些德语文本。
-
在关于电影的英文文本中,列出了许多标题,也会有许多大写单词。在有关德国的英文新闻中,可能很容易遇到“Grundeinkommen”之类的内容。如果文本没有音译为 26 个字母,就不会出现问题。伙计们,你的把戏是行不通的。
-
Apache Nutch 有语言识别模块,但它是用 Java 编写的。由于模块相当独立,您可以将其从 java 转换为 C#。我以前用过java版本,感觉还不错。
-
这比您想象的要容易,因为您只是在比较英语和德语。只需寻找关于它们是哪些语言的明显线索 - 特殊字符、常用词等。
标签: .net nlp text-mining