Similarities: a toolkit for similarity calculation and semantic search. 语义相似度计算、匹配搜索工具包,支持文本和图像,开箱即用。
Go to file
2022-03-05 03:10:45 +08:00
.github init similarities project. 2022-02-23 19:44:53 +08:00
docs init similarities project. 2022-02-23 19:44:53 +08:00
examples init similarities project. 2022-02-23 19:44:53 +08:00
similarities update termsim. 2022-03-05 03:10:45 +08:00
tests init similarities project. 2022-02-23 19:44:53 +08:00
.gitignore init similarities project. 2022-02-23 19:44:53 +08:00
CITATION.cff update termsim. 2022-03-05 03:10:45 +08:00
CONTRIBUTING.md init similarities project. 2022-02-23 19:44:53 +08:00
LICENSE Initial commit 2022-02-23 18:17:53 +08:00
README.md update termsim. 2022-03-05 03:10:45 +08:00
requirements.txt update citation. 2022-02-28 15:09:41 +08:00
setup.py update citation. 2022-02-28 15:09:41 +08:00

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

Similarities

Similarities is a toolkit for Compute Similarity Score between texts.

相似度计算工具包,实现多种字面、语义匹配模型。

similarities实现了Word2Vec、RankBM25、BERT、Sentence-BERT、CoSENT等多种文本表征、文本相似度计算模型并在文本语义匹配相似度计算任务上比较了各模型的效果。

Guide

Feature

文本向量表示模型

  • Word2Vec通过腾讯AI Lab开源的大规模高质量中文词向量数据800万中文词轻量版 (文件名light_Tencent_AILab_ChineseEmbedding.bin 密码: tawe实现词向量检索本项目实现了句子词向量求平均的word2vec向量表示
  • SBert(Sentence-BERT)权衡性能和效率的句向量表示模型训练时通过有监督训练上层分类函数文本匹配预测时直接句子向量做余弦本项目基于PyTorch复现了Sentence-BERT模型的训练和预测
  • CoSENT(Cosine Sentence)CoSENT模型提出了一种排序的损失函数使训练过程更贴近预测模型收敛速度和效果比Sentence-BERT更好本项目基于PyTorch实现了CoSENT模型的训练和预测

文本相似度比较方法

  • 余弦相似Cosine Similarity两向量求余弦
  • 点积Dot Product两向量归一化后求内积
  • 词移距离Word Movers Distance词移距离使用两文本间的词向量测量其中一文本中的单词在语义空间中移动到另一文本单词所需要的最短距离
  • RankBM25BM25的变种算法对query和文档之间的相似度打分得到docs的rank排序
  • SemanticSearch向量相似检索使用Cosine Similarty + topk高效计算比一对一暴力计算快一个数量级

Evaluate

文本匹配

  • 英文匹配数据集的评测结果:
Arch Backbone Model Name English-STS-B
GloVe glove Avg_word_embeddings_glove_6B_300d 61.77
BERT bert-base-uncased BERT-base-cls 20.29
BERT bert-base-uncased BERT-base-first_last_avg 59.04

Demo

Official Demo: http://42.193.145.218/product/short_text_sim/

HuggingFace 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. 计算文本向量

2. 计算句子之间的相似度值

示例examples/semantic_text_similarity.py

句子余弦相似度值score范围是[-1, 1],值越大越相似。

3. 计算句子与文档集之间的相似度值

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

Score的值范围[-1, 1]值越大表示该query与corpus相似度越近。

Contact

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

Citation

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

@software{similarities,
  title={similarities: A Tool for Compute Similarity Score},
  author={Ming Xu},
  url={https://github.com/shibing624/similarities},
  year={2022}
}

License

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

Contribute

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

  • tests添加相应的单元测试
  • 使用python setup.py test来运行所有单元测试,确保所有单测都是通过的

之后即可提交PR。

Reference