搜索系统【处理流程,意图识别,实体识别,属性对齐】

整个处理步骤
一、Query预处理后,进行实体识别,根据权重信息计算得分,排序,重排,得到结果,
例如搜索词:,处理流程如下:zhongguanchun上个月天气情况
1.query预处理,修正文本内容,包含拼音转汉字,停用词同义词替换,转为正常文本,例如修正后的query:中关村上个月天气情况。
2.意图识别,目的是识别词条场景,提前定义好实体是中关村,属性值是天气,我们采用NER和规则匹配(字典树硬匹配)的等方式,并设置置信度筛选获取实体的场景类别。例如中关村(loc)上个月(time)天气,天气问答场景,0.9分
3.query二次解析,解析query中实体和筛选条件,根据query实体在对应场景中检索匹配实体结果并对齐实体中名称,同时处理筛选条件,采用Sentences-BERT语义相似度模型对齐属性名称,例如,获得结果1.地址:中关村,时间:2023年7月,类别:天气,2.地址:中关村路,时间:2023年7月,类别:天气,
4.排序,实体分值计算,筛选条件分值计算,根据得分排序,
5.重排,根据业务需求加权求和,重新排序,
6.使用置信度过滤后返回处理结果。
二、意图识别(分为NER实体识别归类)
1.NER实体识别,使用的是PaddleNLP UIE,算法介绍详见我另一篇文章。link
2.数据集构建,根据自己的数据集类型,穷举出用户的所有问法表达,构建数据集模板(非常重要),(1),制定问法类型,例如分类为单一维度查询和多维度组合查询。梳理自己的所有数据,单一维度数据分类列出,比如地区,人员,汽车等不同维度,再详细列举每个维度下一级分类属性有哪些,例如地区的包含具体省份。多维度组合查询,每个维度组合拼接问法,例如地区下面人员信息。(2),构建问法句式模板,根据问法表达进行组合,例如单一维度查询,{时间}{地区}{地区属性}的情况,{地区}{时间}{地区属性}的情况,多维度查询,{地区}{人员}{人员属性}{时间}的情况。(3)进一步拓展问法,继续穷尽出每个维度的表达,根据系统日志数据或者踩点数据模拟用户的各种问法,提高模型泛化能力,例如{地区简称}{人员简称}的情况。(4)根据定义好的模板,采样每个维度下的实体和属性生成训练数据,训练集保持每个样本采样均衡,保证模板丰富度,并需要维度下面的实体全部采样,系统采集用户真实语料需要人工标注。(5)构建人工测试数据,包含期望搜索结果,真实搜索结果,期望归类,真实归类,期望日期,真实日期。
3.模型训练,具体训练步骤详见我的另一篇文章,这里需要注意的是,第一次训练时候,先拿一小部分数据训练出结果,测试没问题后再上大规模语料,使用验证集测得F1得分为90%以上后上架测试环境,提供测试组人工测试。
4.测试,根据测试集找不同测试人员人工测试,准确率达到上线条件后即可上线。
三、属性对齐(属性值Sentences-BERT匹配识别)
1.目的:例如用户中关村上个月天色情况,天色需要对齐天气,这一步的操作需要一个语义相似度模型进行匹配。
2.模型介绍详见我另一篇文章link
3.数据集构建,类似FAQ的方式,通过构建子问题模板来映射到主问题上,可以利用chatgpt等工具构建属性的相似性问法,例如天气的问法可能是天色,下雨,晴天等,构建模板形式同NER一样。
4.模型训练,按照步骤训练模型,验证集达到90%以上上架测试环境
上架服务,人工测试符合条件后上生产环境。
未完待续。。。

猜你喜欢

转载自blog.csdn.net/dream_home8407/article/details/130903454