利索能及
我要发布
收藏
专利号: 2022116334929
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-07-29
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于向量表示的相似文本检索方法,其特征在于,该方法包含以下步骤:

(1)对篇章级文本进行按句切分,通过断句再拼接的方式将相邻的句子按文本顺序放入一个个segment,使得每一个segment中文本长度不超过510个字符,并在每个segment前添加[CLS]标识;最终将整个文本拆分为多个segment,得到一个segment列表;

(2)将按句切分后得到的segment列表基于BERT编码,利用BERT学习得到segment列表中每个segment的向量表示,其中BERT模型利用第一位[CLS]的表示输出作为segment的向量表示,最终得到segment向量表示列表;

(3)利用Max‑Pooling方法在步骤(2)所得到的segment向量表示列表中的所有[CLS]向量上,取每个纬度的最大值,整合到一个向量上,pooling后的向量表示代表整个篇章文本的向量表示;

(4)利用ball树的思想方法把所有篇章文本向量表示作为数据点划分至一个个超球体当中,组成ball树,所述一个超球体由一个节点来表示,其数据点则指向一个个节点;

(5)基于步骤(4)得到的ball树,利用相似向量检索库Faiss的乘积量化方法对所有篇章文本向量表示加上ball树所有中心点进行压缩和编码,即对向量表示聚类和量化后构建PQ索引;

(6)基于步骤(5)得到的索引进行KNN检索:

(6.1)通过步骤(1)‑(3)的方法将拿到的查询文本转化为查询文本向量表示;

(6.2)利用乘积量化中相同的方法把128维向量表示分成4段32维向量表示,然后计算每一段向量与之前预训练好的簇心表中簇心的距离,得到一张1024*4的距离矩阵表,该表表示查询文本向量与PQ索引中向量的距离;

(6.3)从ball树根节点开始自上而下寻找离查询文本向量最近的叶子节点,从叶子节点中找出离查询文本向量最近的k个数据点,存入一个KNN缓存队列,并且以查询文本向量为中心点,以查询文本向量到KNN缓存队列中第k个数据点的距离为半径,形成一个查询文本超球体;

(6.4)回退查看当前节点的兄弟节点所对应的超球体是否与查询文本超球体相交;所述兄弟节点为属于同一个父节点的另外一个节点;根据三角定理判断两个超球体是否相交;

若查看到某一兄弟节点所对应的超球体与查询文本超球体相交,且该兄弟节点为叶子节点时,计算该节点中是否有比KNN缓存队列中数据点离查询文本向量更近的数据点,若有,则更新KNN缓存队列和查询文本超球体的半径;最后直到回退到根节点即结束检索,输出KNN缓存队列中的k个数据点为查询文本的k个最近邻相似文本。

2.根据权利要求1所述的一种基于向量表示的相似文本检索方法,其特征在于,所述步骤(4)的ball树的思想方法为:开始ball树只有一个根节点,所有的数据点都指向它,之后每一次循环,每个节点会被划分为两个子节点。

3.根据权利要求2所述的一种基于向量表示的相似文本检索方法,其特征在于,所述每一次循环的具体划分过程为:(4.1)计算节点内所有数据点的中心点,即质心;

(4.2)找到离中心点最远的数据点作为左子节点,再找到离左子节点最远的数据点作为右子节点;

(4.3)让离左子节点近的数据点指向左子节点,否则指向右子节点,以此划分出了新的两个区域;

(4.4)计算出这两个区域的中心点和半径,形成两个超球体;按照以上划分过程循环至划分出的超球体中数据点的数量小于设定值时结束,最终构建出ball树索引。

4.根据权利要求1所述的一种基于向量表示的相似文本检索方法,其特征在于,所述步骤(5)的聚类和量化,具体为:(5.1)聚类:假设每个向量表示的维度为128,每个向量被切分为4段,得到4段32维的向量表示;然后对每堆小向量分别进行聚类,假设聚类个数为1024个,则可得到1024个簇心,再给每个簇心赋予ID,最后得到4张有1024个簇心的表;

(5.2)量化:通过第一步得到的簇心表,找到每一个向量表示的4段切分向量表示在4张簇心表中对应的最近的簇心ID,将对应的4个ID赋予4段切分向量表示,这样一个128维的向量就变成了一个由4个ID组成的向量;最后重新计算ball树所有中心节点所在超球体的半径,再构建PQ索引。

5.根据权利要求1所述的一种基于向量表示的相似文本检索方法,其特征在于,所述步骤(6.4)的根据三角定理判断两个超球体是否相交的判断公式为:(radius(p)+r)≤|center(p)‑q|

其中,p为当前节点的兄弟节点所对应的超球体,radius(p)为该超球体的半径,center(p)为该超球体的中心点,q为查询文本向量,r为查询文本超球体的半径,|center(p)‑q|为p的中心点到q的距离;

若两个超球体中心点的距离小于等于两个超球体半径之和,则判断两个超球体相交;

若两个超球体中心点的距离大于两个超球体半径之和,则判断两个超球体不相交。