#相似度 #搜索 #LSH #全对

find-simdoc

文档中时间效率和内存效率的全对相似度搜索

2个版本

0.1.1 2022年9月26日
0.1.0 2022年9月25日

#2484算法

Download history 316/week @ 2024-03-13 406/week @ 2024-03-20 327/week @ 2024-03-27 347/week @ 2024-04-03 151/week @ 2024-04-10 285/week @ 2024-04-17 196/week @ 2024-04-24 78/week @ 2024-05-01 249/week @ 2024-05-08 173/week @ 2024-05-15 94/week @ 2024-05-22 55/week @ 2024-05-29 188/week @ 2024-06-05 257/week @ 2024-06-12 249/week @ 2024-06-19 105/week @ 2024-06-26

808 每月下载量

MIT/Apache

73KB
1.5K SLoC

find-simdoc

文档中时间效率和内存效率的全对相似度搜索。更详细的描述可以在项目页面上找到。

API文档

https://docs.rs/find-simdoc


lib.rs:

文档中时间效率和内存效率的全对相似度搜索。更详细的描述可以在项目页面上找到。

问题定义

  • 输入
    • 文档列表
    • 距离函数
    • 半径阈值
  • 输出
    • 所有相似文档的ID对

特性

易于使用

该软件支持文档相似度搜索的所有基本步骤,从特征提取到输出相似对。因此,您可以使用文档文件立即尝试快速的全对相似度搜索。

灵活的标记化

在特征提取的标记化过程中,您可以在分割单词时指定任何分隔符。这对于存在多个单词定义的语言(如日语或中文)很有用。

时间和内存效率

时间和内存复杂度是基于局部敏感哈希(LSH)和草图排序方法背后的思想的线性。

可调的搜索性能

LSH可以通过手动指定搜索维度来调整性能,包括精度、时间和内存。您可以根据您的数据集和机器环境灵活地进行搜索。

  • 指定较低维度可以进行更快且更粗糙的搜索,同时使用更少的内存。
  • 指定较高维度可以进行更精确的搜索,但需要更多的内存。

搜索步骤

  1. 从文档中提取特征
    • 设置字符或单词n-gram的表示
    • 字符或单词n-gram的TFIDF加权向量表示
  2. 通过局部敏感哈希将特征转换为二进制草图
  3. 使用修改后的草图排序方法在汉明空间中搜索相似的草图

依赖项

~3.5MB
~59K SLoC