Spell checking 什么是变音3算法?

Spell checking 什么是变音3算法?,spell-checking,phonetics,metaphone,Spell Checking,Phonetics,Metaphone,我想自己编写Metaphone 3算法。有描述吗?我知道源代码可以出售,但这不是我想要的 变音是一种语音算法,是1990年发布的一种根据单词的英语发音索引单词的算法。它从根本上改进了Soundex算法,通过使用有关英语拼写和发音的变化和不一致的信息来生成更准确的编码,从而更好地匹配发音相似的单词和名称[…] 变音3 […]对英语单词、美国人熟悉的非英语单词以及美国常见的名字和姓氏的准确率达到了99%左右,这些单词是根据现代工程标准根据准备好的正确编码测试工具开发的 该算法的优点是: 变音算法首先

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

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

变音3

[…]对英语单词、美国人熟悉的非英语单词以及美国常见的名字和姓氏的准确率达到了99%左右,这些单词是根据现代工程标准根据准备好的正确编码测试工具开发的

该算法的优点是:

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

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

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

另一方面,前两次迭代的实现(变音和双变音)是免费提供的(上面的Wikipedia链接包含许多指向这两种语言的实现的链接),这意味着您有一个很好的起点来理解算法的确切含义,然后在您认为合适的情况下对其进行改进(例如,通过创建和使用适当的测试工具)。

由于作者(劳伦斯·菲利普)决定将算法本身商业化,您很可能无法找到描述。询问的好地方是邮件列表:

但您也可以签出源代码(即代码注释),以了解算法的工作原理:

@Bo的链接现在指的是(现在已失效)项目的整个源代码

因此,这里有一个新的链接,直接链接到Metaphone 3的源代码

劳伦斯·菲利普斯
* *变音3被设计为返回一个近似的语音键(和一个备用键) *近似拼音键(如适用),应与英语相同 *发音相似的单词和大多数在美国很熟悉的名字。 *键值不是精确的语音,甚至不是音位, *单词的表示法。这是因为有一定程度的“模糊性” *事实证明,它在补偿发音变化以及 *发音错误。比如,虽然美国人通常不知道,, *字母“s”通常在单词(如“sounds”)的末尾读作“z”。

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

* *(1)所有元音都编码为相同的值——“A”。如果参数对元音进行编码 *设置为false时,将只对初始元音进行编码。如果设置了编码元音 *如果是真的,则“A”将在单词中任何元音通常所在的所有位置进行编码 *宣布W'和Y'被视为元音。尽管在这方面存在差异 *“W”和“Y”在不同情况下的发音导致了它们的存在 *在某些情况下被归类为元音,在另一些情况下被归类为辅音 *在Soundex和Metaphone算法家族的“模糊性”部分,他们将 *在这里,be始终被视为元音。

* *(2)浊音和非浊音辅音对映射到相同的编码值。这 *意思是:
*“D”和“T”->“T”
*“B”和“P”->“P”
*“G”和“K”->“K”
*“Z”和“S”->“S”
*“V”和“F”->“F”

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

实际上,变音3是一种算法,有许多非常具体的规则,是一些测试用例分析的结果。因此,它不仅是一个纯算法,而且还附带了额外的领域知识。为了获得这些知识和具体规则,作者需要付出巨大的努力。这就是为什么这个算法不是开源的

无论如何,还有一种开源的替代方案:双变音。
请参见此处:

这不是一篇商业文章,我与所有者没有任何关系,但值得一提的是,Metaphone3的实现可以作为商业软件从其创建者处获得。看起来像是他的私人商店。这是一个Java应用程序,但我买了Python版本,它运行良好

页面上写着:

解决拼写差异的一个常见方法是数据库方法。 一些非常令人印象深刻的工作已经完成积累个人姓名 来自世界各地的变化。(当然,我们是