4个版本

0.2.0 2020年6月14日
0.1.0-alpha.32019年9月5日
0.1.0-alpha.22019年5月1日
0.1.0-alpha.12019年4月13日

#475 in 机器学习

Apache-2.0

110KB
1.5K SLoC

vtext

Crates.io PyPI CircleCI Build Status

带Python绑定的Rust NLP工具

此包旨在为机器学习应用程序提供高性能的文本数据处理工具包。

特性

  • 分词:正则表达式分词器,Unicode分割+特定语言规则
  • 词干提取:Snowball(在Python中比NLTK快15-20倍)
  • 词频计数:将词频转换为稀疏矩阵,用于机器学习库。类似于scikit-learn中的CountVectorizerHashingVectorizer,但功能更少。
  • 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