我想比较一下我的android应用程序中的字符串。但这里的特例是,我想比较一下用英语写的印度语单词。例如,我想检查"Edhu“"Adhu”"Yethu“在语音上是否平等,在泰米尔语中它们的意思都是一样的。但是,使用英语脚本来书写印度语的人使用不同的拼写来创造这个单词。在这种情况下,我如何比较单词呢?
我试过Levenshtein。但我不知道如何将它返回的数字转换为等式。
我试用了Soundex,Soundex的代码不一样,当单词的第一个字母变了。但它能够找出相似的发声部分。我不明白它是怎么工作的。
soundex.encode("Yethu") (soundex.encode("Edhu")) (soundex.encode("adhu"))
Y300 E300 A300发布于 2015-07-22 13:34:14
据我所知,你想把用英语写成的单词按语音分解,然后把拼法不同但有相同语音表示的单词组合在一起。
因为这个SoundEx是90%的解决方案,只要那些用英语拼写单词的人在将单词从泰米尔语翻译成英语时,实际上使用的是正确的辅音。
您应该能够从SoundEx表示中删除第一个值,并在第一个字母为元音时将其用作编码。
原因是SoundEx ( https://en.wikipedia.org/wiki/Soundex )只对辅音进行编码。它抛弃了所有的元音加上h和w-除非-元音是单词中的第一个字母-这解释了为什么你的值都略有不同,但只有在第一个字母的编码。
至于零,根据定义,SoundEx编码是1个字母和3个数字(从1到6),每个单词(d或t)中只有1个辅音,SoundEx映射到数字3。由于没有辅音,我相信它增加了2个零以满足要求。这样你就可以得到Letter300
如果你要继续为你的应用程序使用SoundEx,你应该记住,它只能给你26*6*6*6 = 5616的唯一编码,基于它的字母编号(1-6)方案。这意味着语音编码不会是唯一的,一些完全不同的单词会有SoundEx编码发生冲突。
https://stackoverflow.com/questions/30843475
复制相似问题