🇨🇳中文 | 🌐English | 📖文档/Docs | 🤖模型/Models
similarities: a toolkit for similarity calculation and semantic search, supports text and image. 相似度计算、语义匹配搜索工具包。
similarities 实现了多种文本和图片的相似度计算、语义匹配检索算法,支持亿级数据文搜文、文搜图、图搜图,python3开发,pip安装,开箱即用。
Guide
Image Search Demo: https://huggingface.co/spaces/shibing624/CLIP-Image-Search
Text Search Demo: https://huggingface.co/spaces/shibing624/similarities
pip install torch # conda install pytorch
pip install -U similarities
or
git clone https://github.com/shibing624/similarities.git
cd similarities
pip install -e .
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
model_name_or_path
:模型名称或者路径,默认会从HF model hub下载并使用中文语义匹配模型shibing624/text2vec-base-chinese,如果需要多语言,可以替换为shibing624/text2vec-base-multilingual模型,支持中、英、韩、日、德、意等多国语言在文档候选集中找与query最相似的文本,常用于QA场景的问句相似匹配、文本搜索等任务。
example: examples/text_semantic_search_demo.py
example: examples/fast_text_semantic_search_demo.py
文本转向量,建索引,批量检索,启动服务:examples/faiss_bert_search_server_demo.py
前端python调用:examples/faiss_bert_search_client_demo.py
支持同义词词林(Cilin)、知网Hownet、词向量(WordEmbedding)、Tfidf、SimHash、BM25等算法的相似度计算和字面匹配搜索,常用于文本匹配冷启动。
example: examples/literal_text_semantic_search_demo.py
支持CLIP、pHash、SIFT等算法的图像相似度计算和匹配搜索,中文CLIP模型支持图搜图,文搜图、还支持中英文图文互搜。
example: examples/image_semantic_search_demo.py
图像转向量,建索引,批量检索,启动服务:examples/faiss_clip_search_server_demo.py
前端python调用:examples/faiss_clip_search_client_demo.py
前端gradio调用:examples/faiss_clip_search_gradio_demo.py
通过社群发现(community_detection)算法可以在大规模数据集上执行聚类,寻找聚类簇(即相似的句子组)。
example: examples/text_clustering_demo.py
通过同义句挖掘(paraphrase_mining_embeddings)算法可以从大量句子或文档集中挖掘出具有相似意义的句子对,可用于冗余图文检测,语义去重。
code: cli.py
> similarities -h
NAME
similarities
SYNOPSIS
similarities COMMAND
COMMANDS
COMMAND is one of the following:
bert_embedding
Compute embeddings for a list of sentences
bert_index
Build indexes from text embeddings using autofaiss
bert_filter
Entry point of bert filter, batch search index
bert_server
Main entry point of bert search backend, start the server
clip_embedding
Embedding text and image with clip model
clip_index
Build indexes from embeddings using autofaiss
clip_filter
Entry point of clip filter, batch search index
clip_server
Main entry point of clip search backend, start the server
run:
pip install similarities -U
similarities clip_embedding -h
# example
cd examples
similarities clip_embedding data/toy_clip/
bert_embedding
等是二级命令,bert开头的是文本相关,clip开头的是图像相关similarities clip_embedding -h
data/toy_clip/
是clip_embedding
方法的input_dir
参数,输入文件目录(required)如果你在研究中使用了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}},
}
授权协议为 The Apache License 2.0,可免费用做商业用途。请在产品说明中附加similarities的链接和授权协议。
项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目,在提交之前,注意以下两点:
tests
添加相应的单元测试python -m pytest
来运行所有单元测试,确保所有单测都是通过的之后即可提交PR。
Thanks for their great work!