#nlp #嵌入 #句子 #算法 #模型 #SIF #句子嵌入

sif-embedding

平滑逆频率(SIF),一种简单但强大的句子嵌入技术

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 算法

MIT/Apache

69KB
874

sif-embedding

actions status   Crates.io version   docs.rs docs

这是以下论文中描述的简单但强大的基于SIF和uSIF的句子嵌入算法的Rust实现

特性

  • 无需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 JSTSJSICK 任务的评估工具和结果。

例如,以下表格展示了 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

故障排除:解决我在环境中遇到错误的一些建议。

许可

根据您的要求,许可为以下之一

依赖

~76MB
~1M SLoC