4个版本
0.2.0 | 2020年6月14日 |
---|---|
0.1.0-alpha.3 | 2019年9月5日 |
0.1.0-alpha.2 | 2019年5月1日 |
0.1.0-alpha.1 | 2019年4月13日 |
#475 in 机器学习
110KB
1.5K SLoC
vtext
带Python绑定的Rust NLP工具
此包旨在为机器学习应用程序提供高性能的文本数据处理工具包。
特性
- 分词:正则表达式分词器,Unicode分割+特定语言规则
- 词干提取:Snowball(在Python中比NLTK快15-20倍)
- 词频计数:将词频转换为稀疏矩阵,用于机器学习库。类似于scikit-learn中的
CountVectorizer
和HashingVectorizer
,但功能更少。 - Levenshtein编辑距离;Sørensen-Dice,Jaro,Jaro Winkler字符串相似度
用法
Python中的用法
vtext需要Python 3.6+,可以使用以下命令安装:
pip install vtext
以下是一个简单的分词示例:
>>> from vtext.tokenize import VTextTokenizer
>>> VTextTokenizer("en").tokenize("Flights can't depart after 2:00 pm.")
["Flights", "ca", "n't", "depart" "after", "2:00", "pm", "."]
更多详情请参阅项目文档:vtext.io/doc/latest/index.html
Rust中的用法
将以下内容添加到Cargo.toml
中:
[dependencies]
vtext = "0.2.0"
更多详情请参阅Rust文档:docs.rs/vtext
基准测试
分词
以下基准测试展示了在UD语料库上分词的准确度(F1分数),
语言 | 数据集 | 正则表达式 | spacy 2.1 | vtext |
---|---|---|---|---|
en | EWT | 0.812 | 0.972 | 0.966 |
en | GUM | 0.881 | 0.989 | 0.996 |
de | GSD | 0.896 | 0.944 | 0.964 |
fr | Sequoia | 0.844 | 0.968 | 0.971 |
以及英语分词速度:
正则表达式 | spacy 2.1 | vtext | |
---|---|---|---|
速度(每秒10⁶个标记) | 3.1 | 0.14 | 2.1 |
文本向量化
以下是在Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz上使用20个新闻组数据集将文本数据转换为稀疏文档-术语矩阵的基准测试,
速度(MB/s) | scikit-learn 0.20.1 | vtext(n_jobs=1) | vtext(n_jobs=4) |
---|---|---|---|
CountVectorizer.fit | 14 | 104 | 225 |
CountVectorizer.transform | 14 | 82 | 303 |
CountVectorizer.fit_transform | 14 | 70 | NA |
HashingVectorizer.transform | 19 | 89 | 309 |
请注意,vtext中这两个估计器目前只支持scikit-learn功能的一小部分。更多详情请参阅benchmarks/README.md。
许可证
“vtext”遵循Apache License, Version 2.0协议发布。
依赖项
约7.5-10MB
约180K SLoC