nihongodera / limelight
PHP 日语文本分析器和解析器。
Requires
- php: >=5.6
- ext-mecab: *
Requires (Dev)
- phpunit/phpunit: ^6.4
This package is auto-updated.
Last update: 2024-08-29 04:35:47 UTC
README
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严重依赖于MeCab和php-mecab。
集合方法和Arr类中的方法是从Laravel的collection方法派生出来的。
欢迎更多贡献者。