变音和双变音算法的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第三方库


热门话题
java将信息存储到另一个类的数组中   java将视频帧添加到JTabbed窗格   java Wicket下拉选择只读   java/Servlets/ISO88591代替UTF8   Java AWS ElastiCache Redis连接超时   升级到Tomcat 7.0.54后java面临404错误   java Hashmap、wicket和计时器?   rust如何使用Java GraalVM在Java代码和嵌入式WASM代码之间传递字符串作为参数和返回值   在调整大小后,如何将java中图像的DPI从96更改为300?   远程文件的java下载统计信息   javascript如何在服务器上复制由jsPDF在web客户端生成的pdf?   java在没有读取权限的情况下从可扩展客户端读取数据   java如何从设备id生成IMIE   java为什么布局参数在Android编程中起作用?   java如何向服务器发送json   java中的数组和对象   java JSON未确定字符串错误