PEARL: 一个轻量的计算短文本相似度的表示模型

2024-02-22 08:52

本文主要是介绍PEARL: 一个轻量的计算短文本相似度的表示模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 | 💻 [code] | 💾 [data] | 🤗 PEARL-small | 🤗 PEARL-base | 论文

如何计算短文本相似度是一个重要的任务,它发生在各种场景中:

  1. 字符串匹配(string matching)。我们计算两个字符串是否表达同一个含义,比如“university” 和 “universities” 尽管看起来不同,但它们有着相同的语义。我们希望一个模型能够捕捉这种有形态变化的相似性。
  2. 模糊匹配 (Fuzzy Join)。这是数据科学中经常遇到的困难,当我们在join不同的表时候,列和列之间的名词并不是完全匹配的。比如在一个关于工资的表中有一个列叫avg_salary,而在另一个表中这个列叫做average_wage,这就使得我们很难匹配到相关的列。这里我们需要一个模型能够捕捉这种语义相似性。
  3. 实体检索 (Entity Retrieval)。这个任务目的是从一个实体候选集 (比如知识库)中找出最匹配的查询实体。比如输入的查询是“The New York Times”,候选集中有三个实体名称["NYTimes", "New York Post", "New York"]。这里我们需要一个模型去找出“NYTimes”是最相关的实体。值得注意的是,有时候实体候选集非常大,可能达到百万千万级别,因此模型的速度也是需要考虑的。

传统的方法使用文本编辑距离计算文本相似度,这种方法简单速度快,缺点就是不能捕捉语义的相似度,比如例子2和例子3的情况。FastText是可以基于词向量计算语义相似度,但是它的效果不如现在流行的上下文相关的语言模型,比如BERT。

这篇文章我们要介绍一个轻量的表示模型PEARL,它只有34M参数,可以计算各种短文本的相似度。比如上面实体检索的案例,PEARL可以知道"The New York Times"和“NYTimes”有着相同的语义。

query_texts = ["The New York Times"]
doc_texts = [ "NYTimes", "New York Post", "New York"]
input_texts = query_texts + doc_textstokenizer = AutoTokenizer.from_pretrained('Lihuchen/pearl_base')
model = AutoModel.from_pretrained('Lihuchen/pearl_base')# encode
embeddings = encode_text(model, input_texts)# calculate similarity
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())# expected outputs
# [[85.61601257324219, 73.65624237060547, 70.36172485351562]]

PEARL的主要思想是使用对比学习框架来学习段文本表示。因为相同意思的文本本身会有多种多样的形式,比如上面“The New York Times”的案例。为了刻画这些特征,PEARL在训练中引入增强样本学习多样性。比如引入字母,单词以及词组级别增强,如下图所示: 

同时,PEARL还在训练中引入了一个辅助任务:短文本类别识别。 PEARL在训练中会让模型的类别,比如“The New York Times”是一个与organization相关的名词短语,noun phrase organization (NP-ORG)。通过这个任务,不同类别的短文本会被区分开,我们也会学到更好的表示。

实验结果表明,PEARL在五个任务(Paraphrase Classification,Phrase Similarity,Entity Retrieval,Entity Clustering,Fuzzy Join)都取得了最好的表现:

同时PEARL在内存和推理速度花销上并没有比FastText高很多。PEARL模型是FastText的很好的替代方案:

 | 💻 [code] | 💾 [data] | 🤗 PEARL-small | 🤗 PEARL-base | 论文 |

作者主页:chenlihu.com

如果觉得以上论文或代码有用,请引用或者给出小星星😊

@article{chen2024learning,title={Learning High-Quality and General-Purpose Phrase Representations},author={Chen, Lihu and Varoquaux, Ga{\"e}l and Suchanek, Fabian M},journal={arXiv preprint arXiv:2401.10407},year={2024}
}

这篇关于PEARL: 一个轻量的计算短文本相似度的表示模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734742

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus