跳转到主要内容

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 (14.1 kB 查看哈希值)

上传时间 源代码

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面