masterweber/morpher-ws3-php-client

PHP 3.0 "Морфер" 网络服务客户端

v0.3.1 2021-03-14 08:42 UTC

This package is auto-updated.

Last update: 2024-09-26 22:47:31 UTC


README

PHP 3.0 "Морфер" 网络服务客户端

GitHub Workflow Status GitHub release (latest by date) Packagist Downloads GitHub

该库实现以下功能

(通过网络服务 "Морфер 3.0")

俄语

乌克兰语

哈萨克语

通用

用户词典

网络服务支持根据用户要求进行格变修正。为此,有3种方法

网络服务 "Морфер 3.0" 提供了 免费(有限制)付费 使用。详情请参阅 项目网站

安装

composer require masterweber/morpher-ws3-php-client

使用

use Morpher\Morpher;

$morpher = new Morpher(
    'https://', // по умолчанию https://ws3.morpher.ru
    'YOUR_TOKEN',        // по умолчанию null
    1.0                  // по умолчанию 3.0 сек
);

可以无参数调用构造函数,在这种情况下将使用默认参数。

use Morpher\Morpher;

$morpher = new Morpher();

俄语格变

使用 russian->declension(string $phrase, string ...$flags) 方法对单词和短语进行格变

$result = $morpher->russian->declension('Программист');

echo $result->genitive;         // Программиста
echo $result->plural->genitive; // Программистов

$result 是具有以下属性的 DeclensionResult 对象

  • nominative — 名词格中的文本;
  • genitive — 生成格中的文本;
  • dative — 宾格中的文本;
  • accusative — 主格中的文本;
  • instrumental — 句子格中的文本;
  • prepositional — 介词格中的文本;
  • plural — 具有复数格属性的对象。

在付费账户上使用服务时,将确定额外的属性

  • prepositional_O — 带有介词 О/ОБ/ОБО 的介词格,介词自动选择;
  • gender — 性别(男性、女性或中性);
  • wherelocative — 带有介词的局部格(局格);
  • where_to — 带有介词的导向格(向格);
  • where_fromwhence — 带有介词的来源格(离格)。

用于解决歧义的标志

有些词可以以不同的方式变格,例如

  • 姓氏 Resnick 对男性变格,对女性不变化;
  • Ростов 在句子格中将是 Ростовым,如果是姓氏,或者如果是城市;
  • 测试器在宾格中将是 тестера,如果是人,或者如果是仪器。

为了提高词形变化质量,您可以通过标志向Web服务提供额外信息。多个标志可以通过逗号分隔传递

use Morpher\Russian\RussianClient;

$result = $morpher->russian->declension(
    'Слепов Сергей Николаевич', 
    RussianClient::FLAG_NAME, 
    RussianClient::FLAG_MASCULINE
);

echo $result->genitive;       // Слепова Сергея Николаевича
echo $result->fullName->name; // Сергей

支持以下标志的 russian->declension(string $phrase, string ...$flags)

  • RussianClient::FLAG_FEMININE — 阳性;
  • RussianClient::FLAG_MASCULINE — 阳性;
  • RussianClient::FLAG_ANIMATE — 有生命的;
  • RussianClient::FLAG_INANIMATE — 无生命的;
  • RussianClient::FLAG_COMMON — 名词;
  • RussianClient::FLAG_NAME — 姓名。

姓名中的姓名、名字和姓氏突出显示

如果输入字符串被识别为姓名,则 DeclensionResult 对象将包含姓氏、名字和中间名的拆分

  • genitive — 姓名在属格;
  • dative — 姓名在宾格;
  • accusative — 姓名在主格;
  • instrumental — 姓名在工具格;
  • prepositional — 姓名在前置格;
  • name — 名字在主格;
  • surname — 姓氏在主格;
  • patronymic — 中间名在主格。

数字的写法及与数字的协调

方法 russian->spell(int $number, string $unit) 解决了获得数字的写法(一千二百二十五)和单位与先前数字的协调(1只鹦鹉,2只鹦鹉,5只鹦鹉)的问题

$result = $morpher->russian->spell(235, 'рубль');

echo $result->n->genitive;    // двухсот тридцати пяти
echo $result->unit->genitive; // рублей

通过组合相应的格形式 n 和 unit,可以获取各种“金额大写”的输出

  • 235元
  • 二百三十五元
  • 235(二百三十五)元等。

以序数词形式写数字

方法 russian->spellOrdinal(int $number, string $unit)russian->spell(int $number, string $unit) 类似,但返回序数词形式的数字写法

$result = $morpher->russian->spellOrdinal(5, 'колесо');

echo $result->n->genitive;    // пятого
echo $result->unit->genitive; // колеса

写日期

方法 russian->spellDate(DateTime $date) 根据格变位日期

$date = new DateTime();
$result = $morpher->russian->spellDate($date);

echo $result->genitive;     // двадцать девятого июня две тысячи девятнадцатого года
echo $result->instrumental; // двадцать девятому июня две тысячи девятнадцатого года

形容词格变按性别

方法 russian->adjectiveGenders(string $adjective) 将给定的形容词变位,将其从阳性转换为阴性、中性以及复数

$result = $morpher->russian->adjectiveGenders('уважаемый');

echo $result->feminine; // уважаемая
echo $result->neuter;   // уважаемое
echo $result->plural;   // уважаемые

输入形容词的要求

  • 它应该是阳性的,单数。
  • 它应该是完整的,即“完整的”,而不是“完整”。
  • 它应该是一个词。词内允许有连字符和撇号:工人-农民,科特迪瓦,而词周围允许有空格、引号和其他符号。

形容词的构成

方法 russian->adjectivize(string $lemma) 从城市和国家的名称中形成形容词:莫斯科 – 莫斯科的,罗斯托夫 – 罗斯托夫的,瑞典 – 瑞典的,希腊 – 希腊的。

示例

$result = $morpher->russian->adjectivize('Москва');

print_r($result); // ['московский']

方法返回一个字符串数组。它们的意义在本描述。

文本中的重音设置

方法 russian->addStressMarks(string $text) 在俄语文本中添加重音

$result = $morpher->russian->addStressMarks('Три девицы под окном');

echo $result; // Три деви́цы под окно́м

重音用代码为 U+0301 的符号表示,该符号直接插入到重音元音之后。单音节词不获得重音符号,除非介词或小品词本身带有重音:за́ рука,не́ за что。变读形式由垂直线分隔,例如

$result = $morpher->russian->addStressMarks('Белки питаются белками');

echo $result; // Бе́лки|Белки́ пита́ются бе́лками|белка́ми

乌克兰语的格变位

乌克兰语变位版本 – 方法 ukrainian->declension(string $phrase, string ...$flags)

$result = $morpher->ukrainian->declension('Крутько Катерина Володимирiвна');

echo $result->genitive; // Крутько Катерини Володимирівни
echo $result->dative;   // Крутько Катерині Володимирівні
echo $result->vocative; // Крутько Катерино Володимирівно

$result 是具有以下属性的 DeclensionResult 对象

  • nominative — 名词格中的文本;
  • genitive — 生成格中的文本;
  • dative — 宾格中的文本;
  • accusative — 主格中的文本;
  • instrumental — 句子格中的文本;
  • prepositional — 文本在地方格;
  • vocative — 文本在呼唤格。

在付费账户上使用服务时,将确定额外的属性

  • gender — 性别(мужской, женский);

乌克兰语版本目前仅处理名字、姓氏和中间名。

用于解决歧义的标志

use Morpher\Ukrainian\UkrainianClient;

$result = $morpher->ukrainian->declension('Карен', UkrainianClient::FLAG_FEMININE);

echo $result->genitive; // Карен (женское имя не склоняется)

支持以下标志的 ukrainian->declension(string $phrase, string ...$flags)

  • UkrainianClient.FLAG_FEMININE — 阳性;
  • UkrainianClient.FLAG_MASCULINE — 阳性;
  • UkrainianClient.FLAG_NEUTER — 中性;
  • UkrainianClient.FLAG_PLURAL — 复数。

乌克兰语中的数字写法及与数字的协调

方法 ukrainian->spell(int $number, string $unit) 解决了获得数字的写法(одна тисяча сто двадцять п'ять)和单位与先前数字的协调(один рубль,два рубля,п'ять рублів)的问题

$result = $morpher->ukrainian->spell(235, 'рубль');

echo $result->n->genitive;    // двохсот тридцяти п'яти
echo $result->unit->genitive; // рублів

哈萨克语的格变位、数和人称

用于变位单词和短语的方法是 qazaq->declension(string $phrase)

$result = $morpher->qazaq->declension('менеджер');

echo $result->genitive;                            // менеджердің
echo $result->plural->genitive;                    // менеджерлердің
echo $result->plural->firstPersonPlural->genitive; // менеджерлеріміздің

$result 是具有以下属性的 DeclensionResult 对象

  • nominative — 名词格中的文本;
  • genitive — 生成格中的文本;
  • dative — 文本在宾格。
  • accusative — 主格中的文本;
  • ablative — 原始格文本;
  • locative — 地方格文本;
  • instrumental — 句子格中的文本;
  • plural — 返回包含复数格文本的属性的对象。

剩余请求

方法 getQueriesLeft() 返回当前剩余的请求数。请求限制将在 00:00 UTC 恢复。

$result = $morpher->getQueriesLeft();

echo $result; // 100

获取修正列表

要获取所有修正的列表,需要使用方法 russian->userDict->getAll()ukrainian->userDict->getAll()

$result = $morpher->russian->userDict->getAll();

print_r($result); // Массив с объектами CorrectionEntry

具有以下属性的 CorrectionEntry 对象

  • singular — 单数形式的 CorrectionForms 对象;
  • plural — 复数形式的 CorrectionForms 对象;
  • gender — 性别(男性、女性或中性)。

具有以下属性的 CorrectionForms 对象

  • nominative — 名词格中的文本;
  • genitive — 生成格中的文本;
  • dative — 宾格中的文本;
  • accusative — 主格中的文本;
  • instrumental — 句子格中的文本;
  • prepositional — 介词格中的文本;
  • locative — 地方格文本;

针对乌克兰语

具有以下属性的 CorrectionEntry 对象

  • singular — 单数形式的 CorrectionForms 对象;
  • gender — 性别(男、女)。

具有以下属性的 CorrectionForms 对象

  • nominative — 名词格中的文本;
  • genitive — 生成格中的文本;
  • dative — 宾格中的文本;
  • accusative — 主格中的文本;
  • instrumental — 句子格中的文本;
  • prepositional — 文本在地方格;
  • vocative — 文本在呼唤格。

添加或更改修正

要添加或修改修正,请使用方法 russian->userDict->addOrUpdate(CorrectionEntry $entry)

use Morpher\Russian\CorrectionEntry;
use Morpher\Russian\CorrectionForms;

$singular = new CorrectionForms();
$singular->nominative = 'Кошка';
$singular->dative = 'Пантере';

$plural = new CorrectionForms();
$plural->dative = 'Пантерам';

$entry = new CorrectionEntry();

$morpher->russian->userDict->addOrUpdate($entry); // true

针对乌克兰语

use Morpher\Ukrainian\CorrectionEntry;
use Morpher\Ukrainian\CorrectionForms;

$singular = new CorrectionForms();
$singular->nominative = 'Кiшка';
$singular->dative = 'Пантерi';

$entry = new CorrectionEntry();

$morpher->ukrainian->userDict->addOrUpdate($entry); // true

删除修正

要删除修正,只需将名词格的字符串传递给方法 russian->userDict->remove(string $nominativeForm)

$morpher->russian->userDict->remove('Кошка'); // true

针对乌克兰语

$morpher->ukrainian->userDict->remove('Кiшка'); // true

开发

PHP:请确保已安装的 PHP 版本不低于 ^7.4。您可以通过 php -v 检查。

安装

morpher-ws3-php-client 仓库创建分支。

然后执行

$ git clone git@github.com:<your-github-username>/morpher-ws3-php-client.git
$ cd morpher-ws3-php-client
$ composer install

运行测试

$ composer test

发布新版本

大约一分钟后,新包应该出现在 packagist.org 上。

许可证

MIT