Skip to main content

Similarities is a toolkit for compute similarity scores between two sets of strings.

Project description

🇨🇳中文 | 🌐English | 📖文档/Docs | 🤖模型/Models


Similarities: Similarity Calculation and Semantic Search

PyPI version Downloads Contributions welcome License Apache 2.0 python_version GitHub issues Wechat Group

similarities: a toolkit for similarity calculation and semantic search, supports text and image. 相似度计算、语义匹配搜索工具包。

similarities 实现了多种文本和图片的相似度计算、语义匹配检索算法,支持亿级数据文搜文、文搜图、图搜图,python3开发,pip安装,开箱即用。

Guide

Features

文本相似度计算 + 文本搜索

  • 语义匹配模型【推荐】:本项目基于text2vec实现了CoSENT模型的文本相似度计算和文本搜索
    • 支持中英文、多语言多种SentenceBERT类预训练模型
    • 支持 Cos Similarity/Dot Product/Hamming Distance/Euclidean Distance 等多种相似度计算方法
    • 支持 SemanticSearch/Faiss/Annoy/Hnsw 等多种文本搜索算法
    • 支持亿级数据高效检索
  • 字面匹配模型:本项目实现了Word2Vec、BM25、RankBM25、TFIDF、SimHash、同义词词林、知网Hownet义原匹配等多种字面匹配模型

图像相似度计算/图文相似度计算 + 图搜图/文搜图

  • CLIP(Contrastive Language-Image Pre-Training)模型:图文匹配模型,可用于图文特征(embeddings)、相似度计算、图文检索、零样本图片分类,本项目基于PyTorch实现了CLIP模型的向量表征、构建索引(基于autofaiss)、批量检索、后台服务(基于Fastapi)、前端展现(基于gradio)功能
    • 支持openai/clip-vit-base-patch32等CLIP系列模型
    • 支持OFA-Sys/chinese-clip-vit-base-patch16等Chinese-CLIP系列模型
    • 支持前后端分离部署
    • 支持亿级数据高效检索
    • 支持图搜图、文搜图、向量搜图
    • 支持图像embedding提取、文本embedding提取
    • 支持图像相似度计算、图文相似度计算
  • 图像特征提取:本项目基于cv2实现了pHash、dHash、wHash、aHash、SIFT等多种图像特征提取算法

Demo

Text Search Demo: https://huggingface.co/spaces/shibing624/similarities

Install

pip3 install torch # conda install pytorch
pip3 install -U similarities

or

git clone https://github.com/shibing624/similarities.git
cd similarities
python3 setup.py install

Usage

1. 文本向量相似度计算

example: examples/text_similarity_demo.py

from similarities import BertSimilarity

m = BertSimilarity(model_name_or_path="shibing624/text2vec-base-chinese")
r = m.similarity('如何更换花呗绑定银行卡', '花呗更改绑定银行卡')
print(f"similarity score: {float(r)}")  # similarity score: 0.855146050453186

2. 文本向量搜索

在文档候选集中找与query最相似的文本,常用于QA场景的问句相似匹配、文本搜索等任务。

SemanticSearch精准搜索算法,Cos Similarity + topK 聚类检索,适合百万内数据集

example: examples/text_semantic_search_demo.py

Annoy、Hnswlib等近似搜索算法,适合百万级数据集

example: examples/fast_text_semantic_search_demo.py

Faiss高效向量检索,适合亿级数据集

example: examples/faiss_bert_search_server_demo.py

3. 基于字面的文本相似度计算和文本搜索

支持同义词词林(Cilin)、知网Hownet、词向量(WordEmbedding)、Tfidf、SimHash、BM25等算法的相似度计算和字面匹配搜索,常用于文本匹配冷启动。

example: examples/literal_text_semantic_search_demo.py

4. 图像相似度计算和图片搜索

支持CLIP、pHash、SIFT等算法的图像相似度计算和匹配搜索,中文CLIP模型支持图搜图,文搜图、还支持中英文图文互搜。

example: examples/image_semantic_search_demo.py

image_sim

Faiss高效向量检索,适合亿级数据集

example: examples/faiss_clip_search_server_demo.py

Contact

  • Issue(建议) :GitHub issues
  • 邮件我:xuming: xuming624@qq.com
  • 微信我: 加我微信号:xuming624, 备注:姓名-公司-NLP 进NLP交流群。

Citation

如果你在研究中使用了similarities,请按如下格式引用:

APA:

Xu, M. Similarities: Compute similarity score for humans (Version 1.0.1) [Computer software]. https://github.com/shibing624/similarities

BibTeX:

@misc{Xu_Similarities_Compute_similarity,
  title={Similarities: similarity calculation and semantic search toolkit},
  author={Xu Ming},
  year={2022},
  howpublished={\url{https://github.com/shibing624/similarities}},
}

License

授权协议为 The Apache License 2.0,可免费用做商业用途。请在产品说明中附加similarities的链接和授权协议。

Contribute

项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目,在提交之前,注意以下两点:

  • tests添加相应的单元测试
  • 使用python -m pytest来运行所有单元测试,确保所有单测都是通过的

之后即可提交PR。

Acknowledgements

Thanks for their great work!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

similarities-1.1.1.tar.gz (48.8 kB view details)

Uploaded Source

File details

Details for the file similarities-1.1.1.tar.gz.

File metadata

  • Download URL: similarities-1.1.1.tar.gz
  • Upload date:
  • Size: 48.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.12.0 pkginfo/1.7.0 requests/2.28.2 requests-toolbelt/0.9.1 tqdm/4.65.0 CPython/3.8.8

File hashes

Hashes for similarities-1.1.1.tar.gz
Algorithm Hash digest
SHA256 54e48a63d6a30e36fdf21ac429d9cbb145e0f9b58f47eeed9a9b5a73442ec57b
MD5 8e215f51788a0ddc3c46284731b2ee12
BLAKE2b-256 42e06720386a5a6a390ae24cbccb75836a72d2147434917b09b3e2fd5ce3d6be

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page