建立汉英词典 - 如何检测哪些字符形成单词?

时间:2014-12-18 15:06:33

标签: ruby-on-rails ruby string

我正在尝试在Rails中构建一个可以帮助用户阅读中文文本的应用程序。如果用户点击中文字符,他们就会获得有关发音和含义的信息。

我使用汉英词典数据库来解决这个问题。但是,我不确定如何检测角色是单个字符还是长字的一部分。例如:我有文字我是铁公鸡,用户点击单词,这意味着“公开”,但应用应将高亮显示铁公鸡显示为“miser”。因此,角色可以是独立的东西,也可以与周围的其他角色形成单词。

检测角色形成的单词的有效方法是什么?我正在考虑针对数据库检查目标字符及其邻居,并选择可以找到的最长组合。还有其他想法吗?

3 个答案:

答案 0 :(得分:1)

我在pin1yin1.com使用的方法是从第一个字符开始,找到字典中存在的最长字符串(我使用CEDICT)然后调用一个单词并重新开始以下字符。这模仿了我们阅读或听到单词的顺序方式,并且在实践中它倾向于正确地进行。

使用典型索引也很容易做到这一点,因为您可以快速检索以一两个字符开头的所有条目,然后循环查找最长匹配。对于您的应用程序,我建议备份10或20个字符,然后按照我的方式按顺序识别单词,直到找到包含所选字符的单词。

答案 1 :(得分:1)

你需要一个中国分割器。存在许多类型的中文分割器,包括HMM(隐马尔可夫方法),CRF(条件随机场),MM(最大匹配)分割(pdg137使用MM分割)。如果您搜索中文分段,那么您可以找到利用这些不同策略的开源程序。

你应该看看Stanford's Chinese segmentation tool。它在细分竞赛中表现得非常好。

顺便说一下,我已经创建了a website来完成您所描述的内容。

答案 2 :(得分:0)

这家伙好像已经弄明白了http://www.sitepoint.com/efficient-chinese-search-elasticsearch/ 他使用Elasticsearch和一些亚洲语言插件。