logue / igo-php
将形态分析引擎 'Igo' 调整并移植到 PHP 7.4 或更高版本和 composer。
Requires
- php: >=7.4
Requires (Dev)
- phpcompatibility/php-compatibility: ^9.3
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^6.2
Suggests
- ext-mbstring: Needed to support mb_* functions in class Tagger.
Replaces
This package is auto-updated.
Last update: 2024-09-14 14:55:45 UTC
README
1. 概要
这是“Java 形态分析器”Igo 的 PHP 实现。Igo 是一个使用 MeCab 的字典格式,提供与 MeCab 类似结果的形态分析程序的实现。这个 Igo-php 提供了与 Igo 相似的形态分析和分词功能。
2. 安装方法
使用 composer 执行以下命令。
composer require logue/igo-php
3. 辞书的制作方法
Igo-php 自身不提供字典生成的功能。因此,在生成字典时,应使用原版的 Igo。
关于此的详细信息,请参阅 https://igo.osdn.jp/index.html#usage,以下仅展示简单步骤。
- 获取 MeCab 项目发布的(或与之兼容的)字典。
- https://sf.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/
- 从 https://osdn.jp/projects/igo/releases/ 获取 Igo 本身。
使用这些内容
java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
按照以下步骤,在当前目录下生成的 ipadic/ 目录以下是字典本体。请将其复制到适当的目录中使用。
4. 使用方法
a. 分词
<?php require 'vendor/autoload.php'; $igo = new Igo\Tagger(); $result = $igo->wakati('すもももももももものうち'); print_r($result);
b. 形态分析
<?php require 'vendor/autoload.php'; $igo = new Igo\Tagger(); $result = $igo->parse('すもももももももものうち'); print_r($result);
如果单独使用,当无法确定指定字符串的正确编码时,可以在 Igo 类的构造函数中更改 output_encoding 的值,并明确指定输出编码以避免此问题。默认情况下,优先识别 UTF-8。
$igo = new Igo\Tagger([ 'dict_dir'=>"/home/user/jdic", 'output_encoding'=>'Shift_JIS' ]);
默认情况下,优先识别 UTF-8。
5. REDUCE 模式
这是为了调整运行时内存使用而设置的。默认情况下,REDUCE 模式为 TRUE。在这种情况下,Igo-php 会直接访问字典文件进行解析。设置为 OFF 时,构造函数执行时将字典存储在内部内存中。解析处理本身会稍微快一些,但使用的内存会增加。如果需要批量处理大量文本数据,则应将其设置为 OFF(但是,在这种情况下,使用原版的 Igo 会更快)。要在构造函数中关闭 REDUCE 模式,请按以下方式添加 reduce_mode。
$igo = new Igo\Tagger([ 'dict_dir'=>'/home/user/jdic', 'reduce_mode'=>false ]);
另外,在使用 FALSE 时,需要适当设置 memory_limit 参数。
ini_set("memory_limit", "1073741824"); //1024^3
6. 字节序问题
二进制字典的字节序取决于创建字典的环境。在大端环境下生成的字典不能在リトルエンディアン平台上使用。反之亦然。Igo-php 默认设置为リトルエンディアン。在 Intel 系平台上应该这样。如果在大端平台上使用,请在构造函数中更改 little_endian 的值。
$igo = new Igo\Tagger(array( 'dict_dir'=>"/home/user/jdic", 'little_endian'=>true //true->Little endian, false->Big endian ));
7. 许可证
以 MIT 许可证发布。有关详细信息,请参阅附带的 LICENSE 文件。此外,使用的字典的许可证应与字典发布者的许可证一致。