carloswph / linguistics
PHP中的语言和语音工具。
v1.1.0
2021-03-22 18:47 UTC
README
新功能 --> 支持 NYSIIS 编码 下一步是什么? --> 支持 Caverphone,Arpabet
此包旨在提供一组新的功能和方法,用于处理在开发或信息技术中常用的语言学和语音学算法。虽然PHP已经提供了将字符串编码为 metaphone 和 soundex 算法的函数,但一些其他有用的算法无法通过原生函数访问。
此外,此包还提供了一份词典,可以从几乎任何英语单词立即转换为 IPA 语音符号。目前,仅提供 en_US,但计划最终包括其他语言或方言。
安装
使用此包的最简单方法是使用 Composer 要求 - 虽然该包可以简单地克隆并使用,只要遵守命名空间。
composer require carloswph/linguistics
使用方法
这已经被组织成独立的类。第一个类 Phonetics 提供三种不同的方法。方法 symbols() 将字符串转换为 IPA 语音符号。如果提供了一个较长的字符串,该类将字符串分割成单词,为所有单词返回相应的符号学,不包括重复的。
所有方法都提供三种不同的响应可能性:TXT、JSON 或 PHP 数组。默认返回 TXT,因此如果需要不同的格式,可以在方法中传递额外的参数。以下是一些示例将使其更清晰。
use Linguistics\Phonetics; require __DIR__ . '/vendor/autoload.php'; $str = 'To be or not to be, that is the question'; Phonetics::symbols($str); /* Returns: [ to ] => /ˈtu/, /tə/, /tɪ/ [ be ] => /ˈbi/, /bi/ [ or ] => /ˈɔɹ/, /ɝ/ [ not ] => /ˈnɑt/ [ that ] => /ˈðæt/, /ðət/ [ is ] => /ˈɪz/, /ɪz/ [ the ] => /ˈðə/, /ðə/, /ði/ [ question ] => /ˈkwɛstʃən/, /ˈkwɛʃən/ */ Phonetics::soundex($str); /* Returns: [ to ] => T000 [ be ] => B000 [ or ] => O600 [ not ] => N300 [ that ] => T300 [ is ] => I200 [ the ] => T000 [ question ] => Q235 */ Phonetics::metaphone($str); /* Returns: [ to ] => T [ be ] => B [ or ] => OR [ not ] => NT [ that ] => 0T [ is ] => IS [ the ] => 0 [ question ] => KSXN */ Phonetics::symbols($str, 'array'); /* Returns: array(8) { ["to"]=> array(3) { [0]=> string(6) "/ˈtu/" [1]=> string(6) " /tə/" [2]=> string(6) " /tɪ/" } ["be"]=> array(2) { [0]=> string(6) "/ˈbi/" [1]=> string(5) " /bi/" } ["or"]=> array(2) { [0]=> string(8) "/ˈɔɹ/" [1]=> string(5) " /ɝ/" } ["not"]=> array(1) { [0]=> string(8) "/ˈnɑt/" } ["that"]=> array(2) { [0]=> string(9) "/ˈðæt/" [1]=> string(8) " /ðət/" } ["is"]=> array(2) { [0]=> string(7) "/ˈɪz/" [1]=> string(6) " /ɪz/" } ["the"]=> array(3) { [0]=> string(8) "/ˈðə/" [1]=> string(7) " /ðə/" [2]=> string(6) " /ði/" } ["question"]=> array(2) { [0]=> string(15) "/ˈkwɛstʃən/" [1]=> string(14) " /ˈkwɛʃən/" } } */ Phonetics::symbols($str, 'json'); /* Returns: string(410) "{"to":["\/\u02c8tu\/"," \/t\u0259\/"," \/t\u026a\/"],"be":["\/\u02c8bi\/"," \/bi\/"],"or":["\/\u02c8\u0254\u0279\/"," \/\u025d\/"],"not":["\/\u02c8n\u0251t\/"],"that":["\/\u02c8\u00f0\u00e6t\/"," \/\u00f0\u0259t\/"],"is":["\/\u02c8\u026az\/"," \/\u026az\/"],"the":["\/\u02c8\u00f0\u0259\/"," \/\u00f0\u0259\/"," \/\u00f0i\/"],"question":["\/\u02c8kw\u025bst\u0283\u0259n\/"," \/\u02c8kw\u025b\u0283\u0259n\/"]}" */
NYSIIS 编码
从 v1.1.0 版本开始,Phonetics 类增加了一个额外的功能,为句子中的每个单词(不包括重复的单词)返回纽约州身份和智能系统语音码,或 NYSIIS。其使用遵循先前静态方法的相同逻辑。
Phonetics::nysiis($str); /* Returns: [ to ] => T [ be ] => B [ or ] => AR [ not ] => NAT [ that ] => THAT [ is ] => A [ the ] => TH [ question ] => GAASTAAN */
进行中
目前有三个其他类正在进行中
- 用于 Caverphone 算法的编码类,版本 1.0 和 2.0
- 用于 Match Rating Approach 比较和字符串编码实现的编码类
- 基于 Arpabet 算法的有趣遗产编码
- Roger Root 编码?
下一个稳定版本,1.2.0,应该已经带来了 Caverphone 类,至少与该算法的 1.0 版本兼容。