9 个不稳定版本
0.5.1 | 2020 年 7 月 25 日 |
---|---|
0.5.0 | 2019 年 9 月 30 日 |
0.4.0 | 2019 年 8 月 7 日 |
0.3.2 | 2019 年 7 月 3 日 |
0.1.1 | 2018 年 12 月 21 日 |
在 文本处理 类别中排名 757
每月下载量 62
70KB
1.5K SLoC
notmecab-rs 是一个非常基础的 mecab 克隆,仅设计用于解析,而不是训练。
此库旨在作为其他工具(如频率分析器)的库使用,而不是直接由人们使用。它也仅支持 UTF-8 字典。(停止在基础设施软件中使用除 UTF-8 之外的编码。)
根据 Apache 许可证,版本 2.0 许可。
测试
获取 unidic 的 sys.dic、matrix.bin、unk.dic 和 char.bin,并将它们放入 data/ 目录下。然后从仓库根目录调用测试。假定使用 Unidic 2.3.0(口语或书面语言变体,不包括 kobun 等),否则某些测试将失败。
性能
notmecab 的性能略低于 mecab,但在许多情况下,mecab 无法找到最低成本的标记序列,因此我非常确信 mecab 在寻找最佳解析时在某些性能敏感的地方只是走捷径。
有一些难以使用的缓存功能,旨在提高性能。您可以使用 prepare_fast_matrix_cache
上传最常见的连接边类型之间的连接矩阵,这是用于像 unidic 现代版本这样的大型字典,或者您可以使用 prepare_full_matrix_cache
将整个矩阵连接缓存加载到内存中,这是用于像 ipadic 这样的小型字典。请注意,在 notmecab 中长时间泵入文本后,对于 unidic 的现代版本,prepare_full_matrix_cache
实际上比 prepare_fast_matrix_cache
慢,尽管显然对于小型字典来说,prepare_full_matrix_cache
是最佳选择。
没有关于 prepare_fast_matrix_cache
存在或行为的稳定性保证,因为它非常具有侵入性,如果我发现更好的方法来完成它所做的事情,那么我将移除它。
示例(来自测试)
// you need to acquire a mecab dictionary and place these files here manually
let sysdic = Blob::open("data/sys.dic").unwrap();
let unkdic = Blob::open("data/unk.dic").unwrap();
let matrix = Blob::open("data/matrix.bin").unwrap();
let unkdef = Blob::open("data/char.bin").unwrap();
let dict = Dict::load(sysdic, unkdic, matrix, unkdef).unwrap();
let result = parse(&dict, "これを持っていけ").unwrap();
for token in &result.0
{
println!("{}", token.feature);
}
let split_up_string = tokenstream_to_string(&result.0, "|");
println!("{}", split_up_string);
assert_eq!(split_up_string, "これ|を|持っ|て|いけ"); // this test might fail if you're not testing with unidic (i.e. the correct parse might be different)
示例输出
代名詞,*,*,*,*,*,コレ,此れ,これ,コレ,これ,コレ,和,*,*,*,*,*,*,体,コレ,コレ,コレ,コレ,0,*,*,3599534815060480,13095
助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*,*,*,格助,ヲ,ヲ,ヲ,ヲ,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*,11381878116459008,41407
動詞,一般,*,*,五段-タ行,連用形-促音便,モツ,持つ,持っ,モッ,持つ,モツ,和,*,*,*,*,*,*,用,モッ,モツ,モッ,モツ,1,C1,*,10391493084848772,37804
助詞,接続助詞,*,*,*,*,テ,て,て,テ,て,テ,和,*,*,*,*,*,*,接助,テ,テ,テ,テ,*,"動詞%F1,形容詞%F2@-1",*,6837321680953856,24874
動詞,非自立可能,*,*,五段-カ行,命令形,イク,行く,いけ,イケ,いく,イク,和,*,*,*,*,*,*,用,イケ,イク,イケ,イク,0,C2,*,470874478224161,1713
これ|を|持っ|て|いけ
您还可以调用 parse_to_lexertoken,它减少了字符串分配,但不会以字符串形式获得特征字符串。
注意
- 如果禁用优化,该软件将无法使用。
- 加载用户词典时不会执行成本重写。
- 在某些情况下,多个解析器在最低成本上并列。在这些情况下,并未定义选择哪个解析器。
- 在某些情况下,meCab未能找到理想的解析,但notmecab-rs却做到了。notmecab-rs永远不会产生一个总成本高于meCab给出的解析。如果它做到了,这表明存在一些潜在的错误,应该报告,请。
依赖关系
~1MB
~16K SLoC