nmapx / bmdm-soundex
Beider-Morse plus Daitch-Mokotoff soundex
Requires
- php: >=5.4.0
- ext-mbstring: *
Requires (Dev)
- monolog/monolog: *
- phpunit/phpunit: 5.5.*
This package is auto-updated.
Last update: 2024-09-10 02:36:29 UTC
README
这是对亚历山大·贝德和阿瑟·P·莫尔斯开发的算法的分支,该算法用于姓名和单词的音位匹配。与 soundex() 和 metaphone() 相比,该算法生成的误报数量更少。此外,还可以在不进行转写的情况下,使用该算法处理某些非拉丁字母表。
致谢
作者:亚历山大·贝德,巴黎 和 斯蒂芬·P·莫尔斯,旧金山
网站:http://stevemorse.org/phoneticinfo.htm(源代码下载,信息及联系方式)
信息
当前支持16种语言:捷克语、荷兰语、英语、法语、德语、希腊语(和希腊拉丁语)、希伯来语、匈牙利语、意大利语、拉脱维亚语、波兰语、葡萄牙语、罗马尼亚语、俄语(拉丁和西里尔)、西班牙语、土耳其语。此外,BMPM(Beider-Morse Phonetic Matching)及其衍生品BMDM可以根据阿什肯纳兹人和塞法迪人的规则解析希伯来语名称。
差异
本分支的目标是移除已弃用的全局函数、全局变量,并以面向对象的方式表示算法。此外,还实施了一些修复和修改以实现统一。现在,在超出过程式代码的极限时,可以在不头痛的情况下将算法包含在框架和第三方应用中。增加了拉脱维亚语实验性支持。
要求
PHP 5.4+; mbstring 扩展
性能
强烈建议使用 PHP 7.0 及更高版本,因为与 5.x 版本相比,性能有显著提升,特别是在数组处理方面,这对于 BMDM 至关重要。此外,还内置了缓存支持——确保 ./runtime 目录可写,并让 BMDM 预编译并缓存其运行时规则。以下是带缓存和不带缓存的性能图表。此外,缓存还可以降低 I/O 负载。测试结果可在此处查看。
用法
包含 BMDM.php 或更好的方法是使用 composer 安装:composer require dautkom/bmdm
<?php // You want to run ./composer install before require "../vendor/autoload.php"; $bmdm = new \dautkom\bmdm\BMDM(); // Process string with a Beider-Morse algorithm and retrieve BM phonetic keys $p = $bmdm->set('Hello world')->soundex() // Try to guess string's language $l = $bmdm->set('Grzegorz')->guess() // Retrieve all supported languages $g = $bmdm->getLanguages() // Process string with a Beider-Morse algorithm and retrieve phonetic keys $b = $bmdm->set('ברצלונה')->bm->soundex() // Try to guess string's language and retrieve only language names $l = $bmdm->set('Grzegorz')->bm->getLanguageNames() // Retrieve Daitch-Mokotoff soundex values // Only latin symbols are supported $d = $bmdm->set('Grzegorz')->dm->soundex()
阿什肯纳兹人和塞法迪人支持
<?php require "../vendor/autoload.php"; // Using 'ash' upon init will load Ashkenazi phonetic rules // Use 'sep' instead of 'ash' to init Sephardic rules $bmdm = new \dautkom\bmdm\BMDM('ash');
一个字符串中的多种语言
<?php require "../vendor/autoload.php"; $bmdm = new \dautkom\bmdm\BMDM(); $p = $bmdm->set('This is Спарта!')->soundex()
不同语言匹配
<?php require "../vendor/autoload.php"; $bmdm = new \dautkom\bmdm\BMDM(); // Words in different languages with the same pronunciation // in most cases give intersections in results. print_r($bmdm->set('Zelinska')->soundex()); print_r($bmdm->set('Зелинска')->soundex()); // ## Latin string // Array // ( // [input] => zelinska // [numeric] => Array // ( // [0] => Array // ( // [0] => 486450 // ) // // ) // // [phonetic] => Array // ( // [0] => Array // ( // [0] => zYlnzki // [1] => zilnzki // ) // // ) // // ) // // ## Cyrillic string // Array // ( // [input] => зелинска // [numeric] => Array // ( // [0] => Array // ( // [0] => 486450 // ) // // ) // // [phonetic] => Array // ( // [0] => Array // ( // [0] => zYlnzka // [1] => zYlnzko // [2] => zilnzka // [3] => zilnzko // ) // // ) // // )
修改
如果您打算修改规则,请禁用开发过程中的缓存,并在之后清理 ./runtime 目录。否则,将加载过期的缓存数据。
许可
本项目根据GNU GPL v3许可证发布,希望对您有所帮助,但没有任何保证;甚至没有关于适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。
版权(c)2008-2016 亚历山大·贝德和斯蒂芬·P·莫尔斯
版权(c)2013-2016 Olegs Capligins