12个版本 (5个重大更新)
0.6.1 | 2023年12月8日 |
---|---|
0.6.0 | 2023年11月18日 |
0.5.1 | 2023年10月31日 |
0.5.0 | 2023年7月1日 |
0.1.2 | 2023年5月7日 |
#383 in 算法
69KB
874 行
sif-embedding
这是以下论文中描述的简单但强大的基于SIF和uSIF的句子嵌入算法的Rust实现
- Sanjeev Arora,Yingyu Liang,Tengyu Ma,一种简单但强大的句子嵌入基线,ICLR 2017
- Kawin Ethayarajh,无监督随机游走句子嵌入:一种强大但简单的基线,RepL4NLP 2018
特性
- 无需GPU:此库仅在CPU上运行。
- 快速嵌入:此库提供快速的句子嵌入,归功于SIF和uSIF的简单算法。我们观察到,在M2 MacBook Air上,我们的SIF实现每秒可以处理约80K个句子。(见基准测试。)
- 合理的评估分数:SIF和uSIF在相似度评估任务上的性能并不优于SOTA模型如SimCSE。然而,它们并不那么糟糕。(见评估。)
此库将帮助您
- 如果您基于DNN的句子嵌入对您的应用来说太慢,
- 您没有使用GPU的选项,或
- 您想为您的开发提供基线句子嵌入。
文档
https://docs.rs/sif-embedding/
入门
请参阅教程。
基准测试
基准测试提供了速度基准。
我们观察到,使用英文维基百科数据集,我们的SIF实现可以在MacBook Air上每秒处理约80K个句子(苹果M2单核心,24GB RAM)。
评估
评估 提供评估 sif-embedding 在多个相似性评估任务上的工具。
STS/SICK
评估/senteval 提供了 SentEval STS/SICK 任务 的评估工具和结果。
例如,以下表格展示了 STS-Benchmark 的 Spearman 排序相关系数评估结果。
模型 | 训练 | 开发 | 测试 | 平均 |
---|---|---|---|---|
sif_embedding::Sif | 65.2 | 75.3 | 63.6 | 68.0 |
sif_embedding::USif | 68.0 | 78.2 | 66.3 | 70.8 |
princeton-nlp/unsup-simcse-bert-base-uncased | 76.9 | 81.7 | 76.5 | 78.4 |
princeton-nlp/sup-simcse-bert-base-uncased | 83.3 | 86.2 | 84.3 | 84.6 |
JSTS/JSICK
评估/japanese 提供了 JGLUE JSTS 和 JSICK 任务的评估工具和结果。
例如,以下表格展示了 Spearman 排序相关系数的评估结果。
模型 | JSICK (测试) | JSTS (训练) | JSTS (验证) | 平均 |
---|---|---|---|---|
sif_embedding::Sif | 79.7 | 67.6 | 74.6 | 74.0 |
sif_embedding::USif | 79.7 | 69.3 | 76.0 | 75.0 |
cl-nagoya/unsup-simcse-ja-base | 79.0 | 74.5 | 79.0 | 77.5 |
cl-nagoya/unsup-simcse-ja-large | 79.6 | 77.8 | 81.4 | 79.6 |
cl-nagoya/sup-simcse-ja-base | 82.8 | 77.9 | 80.9 | 80.5 |
cl-nagoya/sup-simcse-ja-large | 83.1 | 79.6 | 83.1 | 81.9 |
相似度搜索
qdrant-examples 提供了使用 sif-embedding 与 qdrant/rust-client 的示例。
Wiki
故障排除:解决我在环境中遇到错误的一些建议。
许可
根据您的要求,许可为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
依赖
~76MB
~1M SLoC