nmapx/bmdm-soundex

Beider-Morse plus Daitch-Mokotoff soundex

维护者

详细信息

github.com/nmapx/BMDMSoundex

源代码

安装次数: 12,944

依赖关系: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 10

类型:项目

2.1.0 2020-09-09 17:57 UTC

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