我正在寻找一种高效的数据结构/算法来存储和搜索基于音译的单词查找(例如Google的http://www.google.com/transliterate/,但我不打算使用Google音译API)。不幸的是,我想要处理的自然语言没有任何声音编码实现,所以只能自己摸索。
如果用户输入了
我目前所做的与上述方法并没有太大区别。 我正在构建一个正则表达式
我渴望知道是否有比这更好的方法。
目前,对于一个开源项目,我正在使用普通数组来存储单词列表,并根据用户输入动态生成正则表达式来匹配它们。这个方法很好用,但正则表达式比我需要的功能过于强大或资源密集。例如,如果我尝试将其移植到手持设备中,由于使用正则表达式搜索数千个单词会消耗太多电池,我担心这种解决方案会非常昂贵。
必须有更好的方法来完成这项工作,例如拼音输入法是如何工作的?有什么建议可以开始吗?
提前感谢。
编辑:如果我理解正确,这是@Dialecticus-建议的:
我想要从语言1音译,它有3个字符a、b、c
,转换成语言2,它有6个字符p、q、r、x、y、z
。由于每种语言所拥有的字符数量以及它们的音素不同,很难定义一对一映射。
在这里假设我们有一个关联数组/音译表:
a -> p, q
b -> r
c -> x, y, z
我们还有针对Language2的有效单词列表,存储在纯数组中:
...
px
qy
...
如果用户输入了
ac
,在音译步骤1之后可能的组合变成了px,py,pz,qx,qy,qz
。 在步骤2中,我们必须在有效单词列表中进行另一次搜索,并将除px
和qy
之外的所有人都排除掉。
我目前所做的与上述方法并没有太大区别。 我正在构建一个正则表达式
[pq][xyz]
,并与我的有效单词列表进行匹配,从而提供输出px
和qy
。我渴望知道是否有比这更好的方法。