Metaphone算法和双Metaphone算法的Python实现。
项目描述
关于
Metaphone和双Metaphone算法的Python实现
Metaphone
如维基百科页面所述,原始Metaphone算法于1990年发布,作为对Soundex算法的改进。与Soundex一样,它仅限于英语使用。Metaphone算法不产生输入词或名称的音位表示;而是输出一个故意近似的音位表示。近似的编码是为了考虑到说话者发音的变化,以及他们在拼写单词和名称时的错误拼写或变化。
双Metaphone
双Metaphone音位编码算法是Metaphone算法的第二代。它的实现被描述在2000年6月的C/C++用户杂志上。它在原始Metaphone算法的基础上做出了许多基本设计改进。
之所以称为“双”,是因为它可以返回字符串的主码和副码;这解释了一些模糊情况以及具有共同祖先的多个姓氏变体。例如,对“Smith”的编码产生主码SM0和副码XMT,而对“Schmidt”的编码产生主码XMT和副码SMT—两者都包含XMT。
双Metaphone试图解决英语中斯拉夫语、日耳曼语、凯尔特语、希腊语、法语、意大利语、西班牙语、汉语和其他起源的无数不规则性。因此,它比其前辈使用更复杂的规则集进行编码;例如,它测试了大约100个使用字母C的不同上下文。
历史
这是Python双元音算法的副本,来源于Andrew Collins的作品,这是C语言中由Lawrence Philips创建的算法的Python实现。从那时起,多位贡献者对其进行了改进,可以在git历史中查看。
此项目包含一个名为“resources”的目录,其中包含以下内容:
Lawrence Philips的原始C++文件
Kevin Atkinson对其的改进
Maurice Aubrey为其提供的C语言实现(用于Perl扩展)
Python版本的贡献者,最初由Andrew Collins发起,包括:
Andrew Collins
Chris Leong
Matthew Somerville
Richard Barran
Maximillian Dornseif
Sebastien Metrot
Duncan McGreggor
Ollie Bennett
Ian Beaver
Alastair Houghton
使用方法
运行单元测试
metaphone使用标准库中的unittest包,因此,其测试可以由大多数测试运行器执行。如果您已安装nose,您可以执行以下操作
$ git clone https://github.com/oubiwann/metaphone.git $ cd metaphone $ nosetests -v .
如果您已安装Twisted,您可以执行以下操作
$ trial ./metaphone
示例代码
单元测试中充满了示例,所以请务必查看这些示例。但这里有一个示例
$ python >>> from metaphone import doublemetaphone >>> doublemetaphone("architect") (u"ARKTKT", u"") >>> doublemetaphone("bajador") (u"PJTR", u"PHTR") >>> doublemetaphone("Τι είναι το Unicode;") (u'NKT', u'')
野外应用
以下开发者和项目使用了这个库
Andrew Collins在他的各种音乐项目中使用了他的原始代码,处理来自各种网络服务提供的数据中的错别字文本。然后将其集成到Plone/Zope项目中。
Matthew Somerville在Theatricalia上使用它进行人名匹配,并且看起来工作得相当好。数据库存储了姓名的元音双元音,然后在搜索时简单计算输入内容的双元音,并查找任何匹配的内容。
Duncan McGreggor在φarsk项目中使用它,以提供印度-欧洲语言词汇表和词典的更强大的全文搜索功能。
项目详情
Metaphone-0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ad0beadca66cb7ec6ede71ef72bb02da097c493ddf159930d6340bc83f53da27 |
|
MD5 | 81d319c20720bd0a1d2e8529002caf06 |
|
BLAKE2b-256 | d4aec9e4d007e32a6469be212da11d0b8e104d643f6f247d771742caf6ac6bb8 |