nihongodera/limelight

PHP 日语文本分析器和解析器。

安装量: 62,212

依赖项: 0

建议者: 0

安全: 0

星标: 95

关注者: 8

分支: 28

开放问题: 5

类型:项目

1.6.8 2020-10-30 12:47 UTC

README

Latest Stable Version License

PHP 日语语言分析器和解析器。
  • 将日语文本分割成单独的完整单词
  • 找出单词的词性
  • 找出屈折词的词典条目(词干)
  • 获取单词的读音和发音
  • 为单词构建假名
  • 将日语转换为罗马字(英文字母)

快速指南

版本说明

  • 2016年4月25日:Limelight API 在版本 1.6.0 中发生了变化。新的 API 使用集合方法为开发者提供更好的对 Limelight 解析结果的控制。请参阅wiki 以获取更新的文档。
  • 2016年4月11日:Limelight 使用的 MeCab 绑定 php-mecab 在 2015 年 12 月更新到版本 0.6.0 以支持 php 7。0.6.0 之前的绑定不再与 Limelight 的 master 分支兼容。如果您正在使用较旧的 php-mecab 版本,请更新您的绑定或使用php-mecab_pre_0.6.0 版本。

安装 Limelight

使用 Docker

从项目根目录,构建镜像

docker build -f docker/Dockerfile -t limelight .

一旦构建完成,运行容器

docker run --name limelight -v /host/path/to/limelight:/usr/limelight -d --rm limelight

在容器中访问项目

docker exec -it limelight bash

在容器内安装 composer 依赖项

composer install

不使用 Docker

要求
  • php > 5.6
依赖项

在安装 Limelight 之前,您必须在系统上安装 mecab 和 php 扩展 php-mecab。

Linux Ubuntu 用户

使用此存储库中包含的安装脚本。该脚本仅适用于 php7。下载脚本

curl -O https://raw.githubusercontent.com/nihongodera/limelight/master/install_mecab_php-mecab.sh

使文件可执行

chmod +x install_mecab_php-mecab.sh

执行脚本

./install_mecab_php-mecab.sh

您可能需要重新启动服务器以完成此过程。

有关脚本的详细信息,请参阅此处

其他系统

请参阅此页面了解有关在您的系统上安装的更多信息。

安装 Limelight

通过 composer 安装 Limelight。

composer require nihongodera/limelight

解析文本

创建 Limelight\Limelight 的新实例。Limelight 不接受任何参数。

$limelight = new Limelight();

使用 Limelight 对象上的 parse() 方法解析日语文本。

$results = $limelight->parse('庭でライムを育てています。');

返回的对象是 Limelight\Classes\LimelightResults 的实例。

获取结果

使用 LimelightResults 上的方法获取整个文本的结果。

$results = $limelight->parse('庭でライムを育てています。');

echo 'Words: ' . $results->string('word') . "\n";
echo 'Readings: ' . $results->string('reading') . "\n";
echo 'Pronunciations: ' . $results->string('pronunciation') . "\n";
echo 'Lemmas: ' . $results->string('lemma') . "\n";
echo 'Parts of speech: ' . $results->string('partOfSpeech') . "\n";
echo 'Hiragana: ' . $results->toHiragana()->string('word') . "\n";
echo 'Katakana: ' . $results->toKatakana()->string('word') . "\n";
echo 'Romaji: ' . $results->string('romaji', ' ') . "\n";
echo 'Furigana: ' . $results->string('furigana') . "\n";

输出:单词:庭でライムを育てています。读音:ニワデライムヲソダテテイマス。发音:ニワデライムヲソダテテイマス。词干:庭でライムを育てる。词性:名词 介词 名词 介词 动词 符号 平假名:にわでらいむをそだてています。片假名:ニワデライムヲソダテテイマス。罗马字:niwa de raimu o sodateteimasu. 假名:でライムをてています。

使用 集合方法 库按您喜欢的任何方式更改单词集合。

通过使用几个适用的 集合方法 从 LimelightResults 对象中获取单个单词。使用返回的 LimelightWord 对象上的方法。

$results = $limelight->parse('庭でライムを育てています。');

$word1 = $results->pull(2);

$word2 = $results->where('word', '');

echo $word1->string('romaji') . "\n";

echo $word2->string('furigana') . "\n";

输出:raimu

LimelightResults对象和LimelightWord对象的方法遵循相同的约定,但LimelightResults的方法是复数(word),而LimelightWord的方法是单数(word)。

或者,遍历LimelightResults对象上的所有单词。

$results = $limelight->parse('庭でライムを育てています。');

foreach ($results as $word) {
    echo $word->word() . ' is a ' . $word->partOfSpeech() . ' read like ' . $word->reading() . "\n";
}

输出: 庭 是一个名词,读作 ニワ,で 是一个介词,读作 デ,ライム 是一个名词,读作 ライム,を 是一个介词,读作 ヲ,育てています 是一个动词,读作 ソダテテイマス,。 是一个符号,读作 。

完整文档

关于Limelight的完整文档可以在Limelight Wiki页面找到。

源代码、贡献和贡献方式

Limelight使用的日语解析逻辑是从Kimtaro的优秀的Ruby程序Ve改编而来的。非常感谢他以及所有在该项目上作出贡献的人。

Limelight严重依赖于MeCabphp-mecab

集合方法和Arr类中的方法是从Laravel的collection方法派生出来的。

欢迎更多贡献者。

顶部