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