technote / igo-php
将形态分析引擎 'Igo' 端口更改用于 PHP 5.6 和 composer。
Requires
- php: >=5.6.0
- ext-mbstring: *
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.1
- phpmd/phpmd: ^2.10
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2022-07-07 09:52:52 UTC
README
目录
1, 概述
这是“Java 形态分析器 Igo”的 PHP 实现。Igo 使用 MeCab 的词典格式,提供与 MeCab 相似的结果的形态分析程序。Igo-php 提供与 Igo 相似的形态分析和分词功能。
2, 安装方法
使用 composer 执行以下命令。
$ composer require technote/igo-php
3. 创建词典的方法
Igo-php 本身不提供词典生成的功能。因此,在创建词典时,应使用本家的 Igo。
有关详细信息,请参阅 https://igo.osdn.jp/index.html#usage,以下仅展示简单步骤。
- 获取 MeCab 项目提供的(或与之兼容的)词典。
- 从 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(['dict_dir' => '/home/user/jdic']); $result = $igo->wakati('すもももももももものうち'); print_r($result);
b. 形态分析
<?php require 'vendor/autoload.php'; $igo = new Igo\Tagger(['dict_dir' => '/home/user/jdic']); $result = $igo->parse('すもももももももものうち'); print_r($result);
如果指定字符串无法判断适当的编码,则可以像单独使用一样,通过在 Igo 类构造函数时更改 output_encoding 的值,并显式指定输出编码来避免这种情况。默认情况下,优先识别 UTF-8。
<?php require 'vendor/autoload.php'; $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。
<?php require 'vendor/autoload.php'; $igo = new Igo\Tagger([ 'dict_dir' => '/home/user/jdic', 'reduce_mode' => false ]);
请注意,如果使用 FALSE 模式,则需要考虑设置 memory_limit 参数等问题。
<?php ini_set('memory_limit', '1073741824'); //1024^3
6. 字节顺序问题
二进制词典的字节顺序取决于创建词典的环境。在大端环境下生成的词典在little endian平台上无法使用。反之亦然。Igo-php 默认使用为 little endian 的设置。在 Intel 平台上应该没问题。如果在大端平台上使用,请在构造函数时更改 little_endian 的值。
<?php require 'vendor/autoload.php'; $igo = new Igo\Tagger(array( 'dict_dir' => '/home/user/jdic', 'little_endian' => true //true->Little endian, false->Big endian ));
7. 许可证
以 MIT 许可证分发。请参阅附带的 COPYING 文件以获取详细信息。另外,关于使用的词典的许可证,应遵循词典发布者的许可证。
8. 联系方式
9. 参考链接
「Java 形态分析器 Igo」https://igo.osdn.jp/