11个版本 (4个重大更改)

0.5.1 2023年5月12日
0.5.0 2023年2月22日
0.4.0 2023年2月3日
0.3.3 2022年12月14日
0.1.1 2022年8月23日

#1116 in 文本处理

Download history 174/week @ 2024-04-22 79/week @ 2024-04-29 126/week @ 2024-05-06 116/week @ 2024-05-13 192/week @ 2024-05-20 171/week @ 2024-05-27 121/week @ 2024-06-03 212/week @ 2024-06-10 194/week @ 2024-06-17 226/week @ 2024-06-24 131/week @ 2024-07-01 120/week @ 2024-07-08 81/week @ 2024-07-15 176/week @ 2024-07-22 154/week @ 2024-07-29 172/week @ 2024-08-05

每月588次下载
用于 tantivy-vibrato

MIT/Apache

285KB
7K SLoC

vibrato

颤音是基于Viterbi算法的快速分词(或形态学分析)实现。

API文档

https://docs.rs/vibrato

许可证

根据以下任一许可证授权:

由你选择。

贡献

除非你明确说明,否则根据Apache-2.0许可证定义的,任何有意提交供包含在作品中的贡献,都将根据上述方式双授权,不附加任何额外条款或条件。


lib.rs:

颤音

颤音是基于viterbi算法的快速分词(或形态学分析)实现。

示例

use std::fs::File;
use std::io::{BufRead, BufReader};

use vibrato::{SystemDictionaryBuilder, Tokenizer};

// Loads a set of raw dictionary files
let dict = SystemDictionaryBuilder::from_readers(
    File::open("src/tests/resources/lex.csv")?,
    File::open("src/tests/resources/matrix.def")?,
    File::open("src/tests/resources/char.def")?,
    File::open("src/tests/resources/unk.def")?,
)?;
// or loads a compiled dictionary
// let reader = File::open("path/to/system.dic")?;
// let dict = Dictionary::read(reader)?;

let tokenizer = vibrato::Tokenizer::new(dict);
let mut worker = tokenizer.new_worker();

worker.reset_sentence("京都東京都");
worker.tokenize();
assert_eq!(worker.num_tokens(), 2);

let t0 = worker.token(0);
assert_eq!(t0.surface(), "京都");
assert_eq!(t0.range_char(), 0..2);
assert_eq!(t0.range_byte(), 0..6);
assert_eq!(t0.feature(), "京都,名詞,固有名詞,地名,一般,*,*,キョウト,京都,*,A,*,*,*,1/5");

let t1 = worker.token(1);
assert_eq!(t1.surface(), "東京都");
assert_eq!(t1.range_char(), 2..5);
assert_eq!(t1.range_byte(), 6..15);
assert_eq!(t1.feature(), "東京都,名詞,固有名詞,地名,一般,*,*,トウキョウト,東京都,*,B,5/9,*,5/9,*");

依赖项

~3.5–5.5MB
~93K SLoC