我正在开发一个自定义搜索引擎,我需要将每个单词传递给相应的语言特定的词干分析器。
我最近发现了Compact Language Detector(CLD)http://blog.mikemccandless.com/2011/10/language-detection-with-googles-compact.html,它为UTF8缓冲区提供了令人印象深刻的语言检测。
虽然CLD非常适合检测给定缓冲区的语言,但我需要从缓冲区中提取单词边界,并检测每个单词的语言。
有什么想法吗?
答案 0 :(得分:2)
老实说,这是一个先进的NLP主题,可靠的 非常难以 。
首先,你不能像这样检测许多语言中的单词边界。特别是在表意语言(中文,日文等)中,你需要训练有素的学习算法进行标记化 有传言说有人这样做了(参见Basis Technology),但这只对你有用,如果你有能力支付许可费。
顺便说一句。许多单词可以用几种语言完全相同地编写,并且您将无法获得可靠的语言检测。更糟糕的是,算法(通常是一些基于n-gram的检测器)需要几个八位字节来检测任何东西(对或错)。
正如我所说,祝你好运。如果我是你,我会重新考虑我的策略;)
答案 1 :(得分:0)
我开发了一个使用ICU的语言检测引擎,基本上可以执行以下操作:
出于您的目的,因为您输入的是UTF-8,您可以使用setText()方法取UText *(请注意此处链接的示例,它几乎正是您所需要的 - 虽然,您可能想要使用可以设置为遍历UTF-8的C ++ API。