18 个版本
0.11.0 | 2023年10月26日 |
---|---|
0.10.1 | 2022年9月8日 |
0.10.0 | 2022年8月15日 |
0.9.0 | 2022年2月28日 |
0.3.1 | 2020年12月16日 |
在 文本处理 中排名 #323
每月下载量 77 次
21KB
399 行
Instant Segment:Rust 中的快速英语单词分词
Instant Segment 是一个基于 Python wordsegment 项目(由 Grant Jenks 编写)的快速 Apache-2.0 分词库。该项目又基于 Peter Norvig 在《自然语言语料库数据》一书中提供的代码,该书记载于 Beautiful Data 一书(Segaran and Hammerbacher, 2009)。
对于此存储库中包含的微基准测试,Instant Segment 的速度比 Python 实现快约 100 倍。API 被精心构建,以便多个分词可以共享底层状态,从而允许并行使用。
工作原理
Instant Segment 通过根据单词及其出现的语料库选择具有最高概率的分割来将字符串分割成单词。
例如,假设 choose
和 spain
的出现频率高于 chooses
和 pain
,并且 choose spain
对的频率高于 chooses pain
,Instant Segment 可以帮助识别域名 choosespain.com
为 ChooseSpain.com
,这更有可能符合用户意图。
在 此处 了解我们如何构建和改进 Instant Segment,以便在生产环境中在 Instant Domain Search 中使用,以帮助我们的用户找到他们可以注册的相关域名。
使用库
Python (≥ 3.9)
pip install instant-segment
Rust
[dependencies]
instant-segment = "0.8.1"
示例
以下示例假设存在 unigrams
和 bigrams
。请参阅示例 (Rust),(Python) 了解如何构造这些对象。
import instant_segment
segmenter = instant_segment.Segmenter(unigrams, bigrams)
search = instant_segment.Search()
segmenter.segment("instantdomainsearch", search)
print([word for word in search])
--> ['instant', 'domain', 'search']
use instant_segment::{Search, Segmenter};
use std::collections::HashMap;
let segmenter = Segmenter::new(unigrams, bigrams);
let mut search = Search::default();
let words = segmenter
.segment("instantdomainsearch", &mut search)
.unwrap();
println!("{:?}", words.collect::<Vec<&str>>())
--> ["instant", "domain", "search"]
测试
要运行测试,请运行以下命令:
cargo t -p instant-segment --all-features
您还可以使用以下命令测试Python绑定:
make test-python
依赖项
~145–320KB