这里只是一些知识的综述,实战内容查阅案例基于向量匹配的检索式问答实战
一、概述
检索式问答(Retrieval-based Question Answering)是一种问答系统,它通过从预定义的文本库中检索最相关的答案来回答用户的问题。简单来说,就是基于文本相似度来匹配答案,常见的相似度匹配算法有以下几种:
-
TF-IDF (Term Frequency-Inverse Document Frequency):TF-IDF是一种常用的文本检索和信息检索技术,它通过计算单词在文档中的重要性来匹配问题和答案。相关性高的答案往往包含与问题中关键词匹配的高TF-IDF单词。
-
BM25:BM25是一种改进的TF-IDF算法,它考虑了文档中的单词频率和长度等因素,以提高文档的相关性评分。
-
Word Embedding Models:这些模型使用预训练的词向量(如Word2Vec、GloVe、FastText)来捕捉单词的语义信息,并通过计算问题和答案之间的相似度来选择最佳答案。
-
Siamese Networks:Siamese网络是一种神经网络结构,它通过将问题和答案表示为向量,并学习它们之间的相似度得分,然后选择最高得分的答案。
-
BERT (Bidirectional Encoder Representations from Transformers):BERT是一种基于Transformer架构的预训练语言模型,可以用于文本匹配任务,包括检索式问答。它可以捕捉问题和答案之间的复杂语义关系。
-
RNN (Recurrent Neural Networks):循环神经网络可以用于序列到序列的任务,包括问答。例如,可以使用LSTM或GRU来编码问题和答案,然后通过计算它们之间的相似度来选择答案。
-
SVM (Support Vector Machines):支持向量机可以用于文本分类和相关性评分,用于选择问题和答案之间的最佳匹配。
-
Ranking Algorithms:排名算法如RankNet、LambdaMART等可以用于对候选答案进行排序,以便将最相关的答案排在前面。
这些算法可以单独使用,也可以组合使用,以构建更强大的检索式问答系统。选择哪种算法取决于具体的问题和数据集,以及需要的性能和精度要求。
二、训练流程
理论
训练的主要目的是训练一个编码器,通过这个编码器可以将问句编码成计算机能识别的向量,最主要的是,这个编码器能很好的表示问句。同时,这个编码器能通过某种方式来表示两个句子的相似度。也就是说两个相似的句子的编码结果在某方面是有关联的,最常用的就是两个编码向量的余弦值。
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。
流程图
流程图如下所示,图中红色线表示最终将知识库中的数据通过编码模型放进向量数据库。
这个步骤中最主要的技术点就两个:
评论区