首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是Metaphone 3算法?

什么是Metaphone 3算法?
EN

Stack Overflow用户
提问于 2012-05-04 12:13:31
回答 5查看 16K关注 0票数 10

我想自己编写Metaphone 3算法。有描述吗?我知道源代码可以出售,但这不是我要找的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-25 13:55:49

@Bo的链接现在指向(现在是defucnt)项目的整个源代码。

因此,这里有一个新的链接,直接链接到Metaphone 3 https://searchcode.com/codesearch/view/2366000/的源代码

劳伦斯·菲利普斯著

变音位3旨在返回一个近似拼音键(如果合适,还可以返回一个备用的*近似拼音键),对于发音相似的英语*单词和大多数美国人熟悉的名称,该键应该是相同的。*键值不是单词的精确拼音表示,甚至不是拼音表示。这是因为一定程度的“模糊性”已经被证明对补偿发音的变化以及错误的发音是有用的。例如,尽管美国人通常没有意识到这一点,但字母“s”通常在“声音”等单词的末尾发音为“z”。编码的“近似”方面是根据以下规则实现的:** (1)所有元音都编码为相同的值--“A”。如果参数encodeVowels *设置为false,则只对初始元音进行编码。如果将encodeVowels *设置为true,则将在单词中所有元音正常*发音的位置对'A‘进行编码。“w”和“y”都被当作元音处理。尽管“W”和“Y”的发音在不同的情况下存在差异,导致它们在某些情况下被归类为元音,在另一些情况下被归类为辅音,但对于Soundex和Metaphone算法家族的“模糊性”部分,它们在这里将始终被视为元音。** (2)浊辅音对和非浊辅音对映射到相同的编码值。这意味着:

* 'D‘和'T’-> 'T‘

* 'B‘和'P’-> 'P‘

* 'G‘和'K’-> 'K‘

* 'Z‘和'S’-> 'S‘

* 'V‘和'F’-> 'F‘**-除上述浊音/清音规则外,'CH’和'SH‘-> 'X',其中'X’*表示变音素3编码中的"-SH-“和"-CH-”发音。

票数 6
EN

Stack Overflow用户

发布于 2012-05-15 18:40:15

由于作者(Lawrence Philips)决定将算法本身商业化,您很可能找不到描述。询问的好地方是邮件列表:https://lists.sourceforge.net/lists/listinfo/aspell-metaphone

但你也可以签出源代码(即代码注释),以了解算法是如何工作的:http://code.google.com/p/google-refine/source/browse/trunk/main/src/com/google/refine/clustering/binning/Metaphone3.java?r=2029

票数 13
EN

Stack Overflow用户

发布于 2012-05-09 19:52:19

来自维基百科的Metaphone algorithm

变音位是一种语音算法,是1990年发布的一种算法,用于根据单词的英语发音对单词进行索引。它从根本上改进了Soundex算法,利用有关英语拼写和发音的变化和不一致的信息来产生更准确的编码,从而更好地匹配发音相似的单词和名称。

Metaphone 3

...对于英语单词、美国人熟悉的非英语单词以及在美国常见的名字和姓氏,其准确率约为99%,这些单词是根据现代工程标准根据准备好的正确编码的测试工具开发的。

算法的overview为:

变音素算法首先从被处理的单词中删除非英语字母和字符。接下来,所有元音也将被丢弃,除非单词以声母开头,在这种情况下,除声母之外的所有元音都将被丢弃。最后,所有辅音和辅音组都被映射到它们的变音位代码。将辅音及其分组映射到变音位代码的规则相当复杂;要获得这些转换的完整列表,请查看源代码部分中的注释。

现在,回到你真正的问题上:

如果你对Metaphone 3算法的细节感兴趣,我认为你是不走运的(缺乏购买源代码,理解它并自己重新创建它):不公开算法(您可以购买的源代码是一个实例)的全部意义在于,如果不为作者的开发工作付费,您就不能重新创建它(提供您正在寻找的“精确算法”相当于提供实际代码本身)。考虑上面的引用:算法的开发涉及到“编码的测试控制”。除非您碰巧有这样的测试工具或能够创建这样的测试工具,否则您将无法复制算法。

另一方面,前两个迭代的实现(Metaphone和Double Metaphone)是免费的(上面的Wikipedia链接包含了许多不同语言的实现的链接),这意味着你有一个很好的起点来准确地理解算法是关于什么,然后在你认为合适的时候改进它(例如,通过创建和使用适当的测试工具)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10442633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档