在谷歌上搜索后,我不知道是否有任何标准的方式或库可用于检测特定单词属于哪种语言。
假设我有任何单词,我该如何找出它属于哪种语言: 英语,日语,意大利语,德语等等。
是否有适用于C ++的库?对此的任何建议将不胜感激!
在谷歌上搜索后,我不知道是否有任何标准的方式或库可用于检测特定单词属于哪种语言。
假设我有任何单词,我该如何找出它属于哪种语言: 英语,日语,意大利语,德语等等。
是否有适用于C ++的库?对此的任何建议将不胜感激!
int langs = dict["the"];
if (langs | mylang == mylang)
// no other language
由于可能会有其他语言,因此更通用的方法可能更好。
对于向量中设置的每个位,将相应语言的计数加1。 对n个单词执行此操作。 在典型文本中约为n = 10个单词后,您会发现主要语言有10个,与之相关的语言(例如英语/法语)可能有2个,您可以以高概率确定该文本是英语。 请记住,即使您拥有一种语言的文本,它仍然可以引用另一种语言的文本,因此仅有外来词并不意味着该文档是在该语言中编写的。 选择一个阈值,它会工作得非常好(而且非常快)。
显然,最难的是读取所有字典。 这不是代码问题,而是数据收集问题。 幸运的是,这是你的问题,而不是我的问题。
为了使其快速,您需要预加载哈希映射,否则最初加载它会很耗时。 如果这是一个问题,则必须为哈希映射编写存储和加载方法,以有效地阻止整个过程的负载。
好的,
统计训练的语言检测器在单词输入方面表现出奇效,尽管显然有些情况下它们不可能起作用,正如其他人所观察到的。
在Java中,我会推荐您使用Apache Tika。它有一个开源的统计语言检测器。
对于C ++,您可以使用JNI来调用它。现在,是免责声明警告的时候了。由于您特别要求使用C ++,而且我不知道是否有C ++免费替代品,因此现在我将指向我的雇主的产品,这是一个在C ++中本地化的统计语言检测器。
http://www.basistech.com,产品名称为RLI。
我假设你正在处理文本而不是语音。
如果你正在使用UNICODE,它为每种语言提供了一个插槽。
因此,你可以确定特定单词的所有字符都属于这个语言插槽。
关于unicode语言插槽的更多帮助,你可以在这里找到。