carloswph/linguistics

PHP中的语言和语音工具。

v1.1.0 2021-03-22 18:47 UTC

This package is auto-updated.

Last update: 2024-09-22 15:56:35 UTC


README

Codacy Security Scan License GitHub release

新功能 --> 支持 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 版本兼容。