利索能及
我要发布
收藏
专利号: 202210188618X
申请人: 陕西师范大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-10-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于BERT模型的两阶段民间故事检索方法,其特征在于由下述步骤组成:(1)收集民间故事

从民族民间文化资源管理系统中找到民间故事部分,采用爬虫方法将民间故事中的文本数据爬取下来,得到民间故事;

(2)民间故事数据预处理

删除民间故事内容中的乱码、内容为空、与内容不符、同义词随机替换的部分;

(3)构建民间故事数据集

将民间故事处理成标题‑内容的民间故事对,制作成民间故事数据集Y,Y∈{t1:c1,t2:c2,…,tn:cn},其中tn表示第n个民间故事的标题,cn表示第n个民间故事的内容,n选取10000条民间故事,按9:1的比例分为训练集、测试集;

(4)一阶段构建向量搜索引擎

采用BERT‑whitening模型将民间故事数据集Y转化成词向量J,用Faiss检索方法对词向量J建立数据库向量D,D∈{d1,d2,…,dn},将数据库向量D采用倒排快速索引方法分割为N个空间,N为有限的正整数,构建成向量搜索引擎;

(5)筛选候选民间故事集合

将用户的查询请求q通过BERT‑whitening模型转化成查询向量qV,将查询向量qv与数据库向量D按下式确定余弦相似度cosθ:其中·表示点积操作,d表示数据库向量中的一个向量,|| ||表示取模操作,返回前k个候选民间故事集合G,G∈{g1,g2,…,gk},k取值为20~50;

(6)训练BERT模型

将民间故事数据集Y输入至BERT模型进行训练,按下式确定交叉熵损失函数L(y,a):L(y,a)=y×lna+(1‑y)×ln(1‑a)‑5 ‑3

其中,y为真实值,y取值为0或1,a为预测值,a∈(0,1);模型的学习率r∈[10 ,10 ],丢弃率取值为[0.05,0.1],训练轮数为[10,15],每轮训练的批尺寸为8,优化器选择Adam,迭代至交叉熵损失函数L(y,a)收敛;

(7)二阶段确定相关度

l

将训练好的BERT模型输出的词嵌入E和第l个编码层的输出X,l为有限的正整数,对查询请求q和候选民间故事集合按下式确定候选民间故事集合G的相关度F1:E=Es+Ep+Et

1

X=E

l‑1 Q

Q=X ×W

l‑1 K

K=X ×W

l‑1 V

V=X ×W

12

F1=s(H )

其中 表示多头注意力计算的输出,Es表示句子词嵌入,Ep表示位置词嵌入,Et表示词

12 l‑1

嵌入,C表示将注意力矩阵连接操作,Aj表示注意力矩阵,s(H )表示softmax函数,X 是Q K VBERT模型的第l‑1层输出,dk是输入向量的维度,j表示多头注意力的个数,W ,W ,W是线性映射矩阵,Q、K、V表示在训练过程中学习参数矩阵;

按下式确定相关度F:

F=0.5×F1+0.5×F2

wi=s(ri)

其中,F2表示查询请求和候选民间故事子片段的相似度和,ri表示查询请求和候选民间故事子片段的相似度,wi表示每个子片段相关度的权重,s(ri)表示softmax函数;

(8)展示检索结果

将相关度F进行由高到低的排序,相似度最高的民间故事作为最终检索结果展示给用户。

2.根据权利要求1所述的基于BERT的两阶段民间故事检索方法,其特征在于在(3)步骤中,所述的标题‑内容的民间故事对为:将民间故事的标题和内容进行分词,标题拆分为:T={t1,t2,…,tu}

其中u为标题的长度;

内容拆分为:

S={s1,s2,…,sz}

其中z为内容的长度。

3.根据权利要求1所述的基于BERT的两阶段民间故事检索方法,其特征在于在(5)和(7)步骤中,所述的查询请求q为:进行解析、分词处理,通过BERT‑whitening模型转换成词向量V。

4.根据权利要求1所述的基于BERT的两阶段民间故事检索方法,其特征在于在(6)步骤中,所述的将民间故事数据集Y输入至BERT模型进行训练,按下式确定交叉熵损失函数L(y,a):L(y,a)=y×lna+(1‑y)×ln(1‑a)‑4

其中,y为真实值,y取值为0或1,a为预测值,a为0.5,模型的学习率r为10 ,丢弃率取值为0.08,训练轮数为12,每轮训练的批尺寸为8,优化器选择Adam,迭代至交叉熵损失函数L(y,a)收敛。

5.根据权利要求1所述的基于BERT的两阶段民间故事检索方法,其特征在于在(7)步骤中,所述的候选民间故事集合G包含有5个子片段,每个子片段的长度为128,前一个子片段的结尾与后一个子片段的开头有10%的内容重复。

6.根据权利要求1所述的基于BERT的两阶段民间故事检索方法,其特征在于在(7)步骤中的下式中:1

X=E

l

其中X表示BERT模型第l个编码层的输出,l取值为[1,12]。