变音和双变音算法的python实现。

Metaphone的Python项目详细描述


About

a元音素和双元音素算法的python实现

Metaphone

Wikipedia page所述,原始的变音算法是 1990年出版,作为对Soundex算法的改进。就像 Soundex,仅限于英语使用。元音素算法没有 生成输入单词或名称的语音表示;而不是输出 是有意近似的语音表示。近似值 编码是解释说话者改变发音方式所必需的。 拼错或以其他方式改变他们试图拼写的单词和名称。

Double Metaphone

双变音语音编码算法是 变音算法。2000年6月描述了其执行情况 C/C++用户期刊的发布。它做了一些基本的设计 对原始变音算法的改进。

它之所以被称为“double”,是因为它可以同时返回主代码和辅助代码 对于字符串;这说明了一些不明确的情况以及多个 有共同祖先的姓氏变体。例如,对名称进行编码 “smith”产生sm0的主代码和xmt的次代码,而 名称“schmidt”产生一个xmt的主代码和一个smt的次代码——两者 有xmt的共同点。

双重变音试图解释 斯拉夫语、日耳曼语、凯尔特语、希腊语、法语、意大利语、西班牙语、汉语和其他 起源。因此,它使用比其更复杂的规则集进行编码 例如,它测试大约100种不同的上下文。 单独使用字母c。

History

这是python双元音素算法的副本,取自Andrew Collins’ work,一个python在c中实现的算法。 劳伦斯·菲利普斯创作。从那时起,已经有好几家公司进行了改进 贡献者,可在git历史记录中查看。

此项目包含一个resources目录,其中包含 以下内容:

  • 由Lawrence Philips
  • 原始C++文件
  • 凯文·阿特金森对它的改进
  • Maurice Aubrey的C实现(用于Perl扩展)

python版本的贡献者,最初由andrew collins开始 包括:

  • 安德鲁·柯林斯
  • 梁咏琪
  • 马修·萨默维尔
  • 理查德·巴兰
  • Maximillian Dornseif ><
  • 塞巴斯蒂安地铁
  • 邓肯·麦格雷戈
  • 奥利贝内特
  • 伊恩海狸
  • 阿拉斯泰尔·霍顿

Usage

Running the Unit Tests

metaphone使用标准库中的unittest包,并作为 因此,它的测试对于大多数测试运行者来说是可以运行的。如果您安装了nose, 您可以执行以下操作:

$ git clone https://github.com/oubiwann/metaphone.git
$ cd metaphone
$ nosetests -v .

如果已安装Twisted,可以执行以下操作:

$ trial ./metaphone

Example Code

单元测试充满了示例,所以一定要检查它们。但这是 尝一尝:

$ python
>>> from metaphone import doublemetaphone
>>> doublemetaphone("architect")
(u"ARKTKT", u"")
>>> doublemetaphone("bajador")
(u"PJTR", u"PHTR")
>>> doublemetaphone("Τι είναι το Unicode;")
(u'NKT', u'')

In the Wild

以下开发人员/项目使用此库:

  • Andrew Collins在各种音乐项目中使用了他的原始代码 处理来自各种web服务提供的数据的拼写错误的文本。这个 然后与plone/zope项目集成。
  • Matthew Somerville在剧院里使用它进行人名匹配,并且 它似乎起作用了。数据库存储双变音 对于名字和姓氏,然后在搜索时简单地计算double 输入内容的变音并查找匹配的任何内容。
  • Duncan McGreggorφarsk project上使用它来提供更充分的 T型印欧语系单词表和 字典。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
NetBeans中的Java Swing滚动窗格   java如何与具有复合键的表建立关系?   Android中读取文件时java数据丢失   java黄瓜场景。embed在ubuntu机器上不工作?   java从spring mvc控制器操作中,我如何获得请求/响应的访问权限?   java减去两个长值   java选择下一个值firebase 安卓   用于起始和结尾连字符的java正则表达式   Java正则表达式解释   java Lifefay freemarker ADT:方法不可用?   java我怎样才能让我的开关盒作用于JFrame?   java在我的场景中使用连接池的理想方式是什么   java我如何接受jsoup的cookies?   java如何将整数数组更改为字符串数组?   java Android操作\u指针\u向上直到剩余触摸移动时才调用   java为什么gradle会出错?   io如何在java中复制/拆分输入流?   java使JButton不可见,但尊重其原始空间   java Spring提交表单获取复选框值不起作用