什么是Metaphone 3算法?

nec*_*cer 7 spell-checking metaphone phonetics

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

Bo.*_*Bo. 12

由于作者(劳伦斯飞利浦)决定将算法本身商业化,因此您很可能找不到描述.要问的好地方是邮件列表: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

  • @bjan你去了:http://code.google.com/p/google-refine/source/browse/trunk/main/src/com/google/refine/clustering/binning/Metaphone3.java?r = 2029 - - 这个链接在原始答案中并且是完全合法的(根据BSD许可证捐赠)但不知何故,作者正在让其他人从答案中删除链接.看到"编辑",你会看到原始答案中的链接.不酷! (3认同)
  • 好吧,这不是我希望的答案,但是由于您设法找到了指向源代码的(合法)链接,我应该授予您赏金:) 我不确定为什么要出售源代码(如果是的话)也可以免费(合法)使用,但由于赏金将在 10 分钟后到期。我应该稍后弄清楚所有这些,然后交给你!:) (2认同)

Att*_*ila 10

从维基百科,Metaphone算法

Metaphone是一种语音算法,是一种发表于1990年的算法,用于通过英语发音索引单词.它通过使用有关英语拼写和发音中的变化和不一致的信息从根本上改进Soundex算法,以产生更准确的编码,这可以更好地匹配听起来相似的单词和名称[...]

特别是Metaphone 3

[...]对于英语单词,美国人熟悉的非英语单词,以及在美国常见的名字和姓氏,根据现代工程标准针对测试工具开发,达到了大约99%的准确度.准备好正确的编码.

该算法的概述是:

Metaphone算法首先从正在处理的单词中删除非英文字母和字符.接下来,除非单词以初始元音开头,否则所有元音也被丢弃,在这种情况下,除了初始元音之外的所有元音都被丢弃.最后,所有组成部分和组成部分都映射到他们的Metaphone代码.将辅音及其组合分组然后映射到变音码的规则相当复杂; 有关这些转换的完整列表,请查看源代码部分中的注释.

现在,谈谈你真正的问题:

如果你对Metaphone 3算法的细节感兴趣,我认为你运气不好(没有购买源代码,了解它并自己重新创建它):不做算法的全部意义(对您可以购买的源是一个实例)public是您无法在不向作者付费的情况下重新创建它(提供您正在寻找的"精确算法"等同于提供实际代码本身).考虑上面的引用:算法的开发涉及"编码的测试工具".除非您碰巧拥有此类测试工具或能够创建一个测试工具,否则您将无法复制该算法.

另一方面,前两个迭代(Metaphone和Double Metaphone)的实现免费提供的(上面的Wikipedia链接包含一系列链接到两种语言的实现的链接),这意味着你有一个很好的起点来理解什么算法是准确的,然后根据您的需要对其进行改进(例如,通过创建和使用适当的测试工具).

  • 由于[Amorphics](http://www.amorphics.com/buy_metaphone3.html)的代码售价为40.00美元,因此它的价格远非昂贵.许可条款禁止重新分发源代码; 如果您在网上找到源代码,则可能无法合法获得.但是,您可以使用源代码构建软件并分发编译的程序而不受任何限制.IANAL; 这是我对许可页面上的内容的快速解释,这是URL上的链接. (6认同)

Ada*_*cha 6

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

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

劳伦斯·飞利浦

Metaphone 3 旨在返回一个近似的语音键(和一个替代的 * 近似语音键,在适当的时候)对于英语 * 单词和大多数在美国熟悉的名字来说应该是相同的,它们的发音相似。* 键值并不打算是单词的精确语音,甚至音素,* 表示。这是因为一定程度的“模糊性”已*被证明可用于补偿发音的变化以及*听错的发音。例如,尽管美国人通常不知道,* 字母“s”通常在“sounds”等词的末尾发音为“z”。

编码的“近似”方面是根据以下规则实现的:

* * (1) 所有元音都被编码为相同的值 - 'A'。如果参数 encodeVowels * 设置为 false,则只会编码初始元音。如果 encodeVowels 设置为 * 真,'A' 将在单词中所有元音正常发音的地方进行编码。'W' 和 'Y' 被视为元音。尽管*在不同情况下“W”和“Y”的发音存在差异导致它们在某些情况下被归类为元音而在其他情况下被归类为辅音,但出于“模糊”的目的*

* * (2) 浊音和清音辅音对映射到相同的编码值。这意味着:
* 'D' 和 'T' -> 'T'
* 'B' 和 'P' -> 'P'
* 'G' 和 'K' -> 'K'
* 'Z' 和 'S ' -> 'S'
* 'V' 和 'F' -> 'F'

* * - 除了上述浊音/清音规则,'CH' 和 'SH' -> 'X',其中 'X' *表示 Metaphone 3 编码中的“-SH-”和“-CH-”声音。


law*_*ips 5

我认为让一般社区拒绝算法(而不是代码)是错误的

我是卖源码的,所以算法没有隐藏。我要求 40.00 美元获取源代码的副本,并要求其他使用 Metaphone 3 为其软件或服务收费的人向我支付许可费,并要求其他人不要分发源代码(除了对于我为 Google Refine 所做的例外 - 我只能要求您不要重新分发与 Refine 包分开的 Metaphone 3 副本。)