#nlp #japanese # #命令行工具 #wasm-binary

bin+lib igo-rs

纯Rust移植的Igo,用于日语的POS(词性标注)标记器(日语形态素解析)

8个版本

0.3.0 2019年7月20日
0.2.4 2018年5月26日
0.2.3 2017年6月25日
0.2.2 2017年5月3日
0.1.1 2016年11月22日

#1179 in 文本处理

每月 21 次下载

MIT 许可证

245KB
2K SLoC

igo-rs

Build status

纯Rust移植的Igo,用于日语的POS(词性标注)标记器。

原始版本是用Java编写的。

从版本0.3开始支持WebAssembly(在线演示)。

日语遵循英语

要求

  • 使用原始版本构建的二进制字典文件(您可以从这里下载预构建的字典)

演示(作为命令行工具)

% cp -r somewhere/original_java_igo/dic/ipadic data
% cargo build --release
% ./target/release/igo -t "すもももももも🍑もものうち" data/ipadic

すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
	助詞,係助詞,*,*,*,*,も,モ,モ
🍑	記号,一般,*,*,*,*,*
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

使用(作为库)

extern crate igo;

use std::path::PathBuf;
use igo::Tagger;

fn main() {
    let dic_dir = PathBuf::from("data/ipadic");
    let tagger = Tagger::new(&dic_dir).unwrap();
    let text = "すもももももももものうち";

    let results = tagger.parse(text);
    for ref m in results {
        println!("{}\t{}", m.surface, m.feature);
    }
    println!("EOS");
}

构建二进制字典

% cargo build --release
% ./target/release/igo_build_dic data/ipadic data/mecab-ipadic-2.7.0-20070801-utf8 UTF-8

### Build word trie
### Build word dictionary
### Build matrix
### Build char-category dictionary
DONE

许可证

MIT许可证。

概要

这是由Takeru Ohta氏用Java编写的日本语形态素解析库Igo的Rust移植版本。

特点

  • 纯Rust,因此易于在Windows等系统上设置运行环境。
  • 不使用unsafe处理。
  • 可以编译为WebAssembly(在线演示)。

所需条件

  • Java版Igo构建的二进制字典(目录)。 (这里 可以下载构建好的IPA字典)
  • 这个Rust版的Igo也支持构建二进制字典。请参阅上面的“构建二进制字典”。

用法

作为Rust库或命令行程序使用。请参阅上面的“演示”和“使用”。

注意事项

  • 为了加速,处理结果 igo::Morpheme 保留了处理目标文本和 igo::Tagger 的引用。 surface 是处理目标文本的切片, feature 是字典内文本的切片。根据需要,请执行如 Morpheme#to_owned() 等处理。
  • 构建二进制字典时,建议使用UTF-8编码。

内存使用量

examples/parse.rs 在64位Linux环境中使用 valgrind --tool=massif 进行测试,最大为102.6MB。

ruby绑定

igo-rs-ruby -- 作为ruby扩展库调用的测试

依赖关系

~6MB
~163K SLoC