搜索引擎主题模型优化(主题库数据如下示例:当前系统操作流程是什么?)
优采云 发布时间: 2022-02-19 10:07搜索引擎主题模型优化(主题库数据如下示例:当前系统操作流程是什么?)
随着深度学习的发展,语义搜索也广泛应用于信息检索、问答、对话和推荐等领域。根据文本表示,目前的搜索技术可以分为基于稀疏向量和基于密集向量。前者本质上是基于关键词匹配的确定性搜索,后者是向量化的语义相似度搜索。在工程实践中,这两种技术经常相辅相成。在主题查询的实践中,本文提出了一种结合传统全文检索和向量语义计算的无监督学习方案。它允许手动调整以更改搜索结果,而无需标记样本,并以较低的实施成本实现短文本。语义搜索。
01
业务需求
在业务系统运行过程中,积累了越来越多的常见查询或分析需求,例如查询特定统计时间指定单位的“上网电费率”明细等。业务开发者不断梳理和总结这些常见需求,形成主题库,目前收录约2000个主题句。后端支持的主题库和SQL查询引擎大大提高了用户实时查询和分析数据的能力,属于业务热点应用模块。
主题数据库数据如下:
目前的系统操作流程是用户先手动选择主题句,然后手动输入相关参数值,从而完成查询请求。随着业务量和应用规模的增加,用户期望能够提供更直接、更高效的交互方式,即通过自然语言输入,系统智能定位查询意图,自动提取相关参数值以完成查询请求。
02
计划选择
解决上述问题的核心是提供一种将自然语言输入直接转换为后端 SQL 查询的机制。目前业界主流的解决方案包括NL2SQL、语义理解等:
这是一个端到端的实现,直接将用自然语言表达的查询需求转换为 SQL。这种解决方案的优势是显而易见的。即使是普通的业务用户,也可以不受预定义查询模板的限制,使用自然语言自由地进行各种复杂的数据查询。但是,目前主流的基于深度学习的技术仍然无法处理各种复杂的查询需求:以Spider为例,它是耶鲁大学2018年开放的NL2SQL数据集,引入了很多复杂的SQL操作。它是目前最难的数据集和最粘稠的数据集。符合实际应用场景,目前测试的最高准确率仅在60%-70%之间。因此,在这个阶段,
该实现方案将自助查询实现分为两部分:一是语义理解和问题定位,二是SQL生成。其中,SQL生成是手动根据主题句预定义模板,因此系统只需要实现语义理解部分,实现难度较小,但自动化程度不如NL2SQL。
在我们的应用中,查询需求比较复杂,用户积累了大量的主题句SQL模板。考虑到目前的情况,语义理解方案兼具可操作性和实用性。该方案可以根据用户输入的查询句自动匹配主题库中的主题句,提取主题收录的语义信息,可以分解为语义搜索和信息提取两个任务,如图1以下:
图1 语义理解示例
信息提取或语义槽提取是 NLP 领域中的命名实体识别 (NER) 问题。解决方案相对固定。一般通过序列标注或基于字典抽取来实现。不在文字讨论范围之内。语义搜索的实现将在后面介绍。
03
解决方案
话题查询业务有两个特点:一是业务专业性强,查询需求有特定的业务诉求,如“控费”、“在线状态网”、“计量”、“抄表”等;二、语义理解作为传统业务运营的优化手段,并不是核心能力。业务部希望成本低、快,并有望促进未来的不断调整和优化。综上所述,我们在技术选择上遵循以下原则:
通过对主题库数据的分析,我们发现主题句一般由专业词+通用语义表达组成,如:“通过车站区号查询用户数”、“查询当地住户数” “三相户低压抄表区”、“转户名流程查询”等,其中专业词为“台湾区号”、“抄表区”、“三相”、“所有权转移”等,其余均为约定俗成的表达方式。基于以上特点,语义搜索的实现采用召回和排序两阶段的处理方式,如下图2所示:
图2 两阶段处理流程*敏*感*词*
1) 召回
目标是过滤掉与用户查询相关的主题句。在召回阶段,引入了基于主题词的预筛选机制。主题词可以作为主题句的核心语义。具有相同“主题词”的句子具有相同的“上下文”,因此具有更大的相关性。
2) 排序
目标是计算与查询意图最相似的主题句。使用基于*敏*感*词*通用相似句子语料库训练的句子向量生成模型生成句子向量。优点是它很容易获得,而无需标记语料库。由于我们在召回阶段专门根据主题词进行筛选,而语料库中的主题词一般都是领域特定词,所以参与相似度排序的主题句会有相似的专有词成分,大大减少专有词的数量词对。相似结果的影响。排序功能是通过计算查询句与后端主题句的句向量的相似度来实现的,如下图3所示:
图3 句子向量相似度排序的实现架构
04
执行
首先,基于主题词搜索,从主题查询语句集中初步筛选出相关数据;然后基于相似度句子向量模型生成查询向量,对第一步筛选的结果集进行向量相似度计算,最终得到排序结果。主题查询语句集是实现过程中可以获得的主要语料库。我们从领域新词提取算法中提取领域专业词,以补充分词词典的不足;从主题词提取算法中提取主题词,形成主题词词库,用于支持后续的关键词搜索。实现过程如下图4所示:
图4 主题语义搜索的实现流程
1) 领域新词提取
特定领域词典是行业文本分析的基本工具。主题库收录许多电力领域专用词,通常可以作为句子的核心语义表示,在主题词提取、信息检索等后续更高层次的任务中发挥重要作用。,因此高质量域词典的自动构建是后续处理的前置任务。
领域词提取属于NLP领域的新词发现问题。通常分为监督学习和无监督学习两大类:
把这个问题想象成 NLP 中的一个序列标注任务,即通过深度神经网络或 CRF 等序列标注模型确定新词的边界。这种实现需要大量的标记语料库进行学习。优点是准确率和召回率高,缺点是语料获取成本高。
无监督算法一般采用基于统计的方法,主要通过语料库中词的分布、频率等信息来判断和提取词片段。这种方法的缺点是规则有限,容易遇到规则冲突,各种指标的阈值需要人工确定。召回率和准确率难以平衡,效果不如监督学习;优点是不需要标注,语料成本低。一般来说,它在更*敏*感*词*的语料库中表现良好,具有很大的工程应用价值。
遵循成本优先原则,我们选择无监督学习。根据业界对汉语构词特征的普遍分析结果,构词判断规则采用以下指标:
点互信息是信息论中用来衡量两个特定事件相关强度的统计量,值的大小代表了两个事件之间相关强度的强弱。这里用它来表征语料库中字符之间的衔接程度。衔接程度越高,两个字符或文本片段成为单词的概率就越高。如“蝙蝠”、“蜘蛛”、“玫瑰”等都是典型的高衔接词。在语料库中,这些词的组成词几乎总是同时出现,很少单独使用。因此,可以认为这些词组成词的概率很高。
一般认为,文本段左右边界的多样性越丰富,该文本段成为单词的概率就越高。量化多样性的有效指标是左右信息熵。信息熵用于衡量随机事件的不确定性。不确定性越高,信息量越大。在新词发现中,信息熵用于衡量词左右边界的随机性。以一些典型词为例:
除上述指标外,还引入了段长、ngram频率、位置频率等特征,以增强规则的鲁棒性。对于大约 2000 个主题句语料库,我们应用上述规则提取领域词,总共获得了 300 多个词。部分提取结果如图 5 所示:
图 5 无监督生词提取结果
可以看出,虽然有一些不完整的词片段,如“未设置”、“签约”等,但正确生词的比例也很高。作为一种低成本的无监督词提取算法,实用价值可以接受。通过计算提取结果与现有词典的差异,可以得到未注册的“生词”。
2)关键词提取
主题词,即关键词,是指能够表达课文中心内容、可以作为课文关键语义特征的词。例如,在主题句“国家电网费控用户列表”中,可以将“费控”或“控费用户”视为主题词。我们应用预先提取的主题词来过滤匹配的主题句。
主题词提取算法一般可以分为监督学习和无监督学习两大类:
监督学习可分为抽取型和生成型:抽取型通常用作分类任务或序列标注任务。例如,提取过程被视为一个二元分类任务。先提取候选词,再提取候选词是否属于关键词。优点是在特定语料库中准确率高。缺点是需要人工标注语料,成本高。与生成式相比,关键词必须存在于文本中,缺乏灵活性和通用性;生成公式采用了所谓的自然语言生成(NLG)技术,其特点是生成的关键词不限于文本中出现的单词,泛化性强。
无监督学习常用的算法有:基于统计特征的TF/IDF;基于图的TextRank;基于主题模型的LDA等。优点是实现简单快速;缺点是不能综合利用多种信息对关键词进行过滤,在部分数据集中效果一般。
这里我们仍然选择输入输出比高的无监督方法。经过实际数据集的对比验证,我们选择基于TF/IDF的算法:
综上所述,对于短文本来说,词图关系、词概率分布等一些比较复杂的规则并不能起到有效的作用,反而不如词频、逆文档频等简单的统计指标有用。 TFIDF 的最终选择。算法原因。
主题词提取结果的一些示例:
可以看出,一方面,虽然表达关键语义的词粒度较小,但仍然具有很好的识别价值;另一方面,可以通过将预提取的短语添加到分词词典中来优化提取粒度。
下面是引入领域词词典前后的抽取结果对比:
主题句:查询山东省欠费停电清单
3)根据关键字搜索
基于全文检索技术的实现,其基本原理是利用倒排结构等索引技术,大大提高了文本检索的效率,其典型应用是搜索引擎。现代搜索引擎系统非常强大,包括对布尔模型、向量空间模型等查询模型的支持;支持前缀查询、正则查询、范围查询等多种查询形式;支持稀疏向量和密集向量查询。
这个用例实现了基于搜索引擎的主题句召回:
A. 支持单词和单词搜索
直接应用搜索引擎时,往往在索引或查询阶段对词进行切分,这就带来了一个问题:如果按词切分,就不能按词搜索;如果按词切,不能使用分词词典带来的先验知识,会召回很多不相关的数据;复杂的查询机制,例如按词索引然后使用短语查询,会对性能产生很大影响。例如,当系统需要满足“费用”(如量价收费查询)或“电费”、“成本控制”等查询需求时,需要对索引和查询。这里选择一种简单的实现方式,即采用不同的分词策略,根据“词”构建索引
图6 主题库索引映射示例
查询时,同时进行词和词的多字段搜索。通常,当用户输入“电费”等词时,更希望词搜索得到的结果具有更高的权重,因此增加“词”字段在查询时的权重。下面的例子:
输入“fee”进行查询,可以看到除了“business-fee”等词匹配结果外,还包括“电费”等词匹配结果。
图 7 按词查询示例
输入“charge”查询,可以看到前面列出了所有匹配“charge”这个词的结果。
图 8 按词查询示例
B. 预筛选策略
从业务角度来看,我们期望可以优先选择收录主题词的主题句,因此查询实现基于多字段搜索策略,增加了主题词字段的排序权重,如图以下示例:
4)语义相似度比较
目前主流的语义相似度模型一般都是基于深度学习实现的,尤其是基于*敏*感*词*语料库的预训练模型,可以分为表示模型和交互模型两种:
它侧重于表示层的构建,目标是获得文本的表示向量。提取向量时,无需考虑其他文本的输入信息进行比较和计算。它通常由双塔模型实现。优点是可以直接用于提取单个输入句子的句子向量,应用时可以借助专用向量引擎进行快速相似度比较,性能高,具有很大的工程应用价值。
两个输入的交集特征是在靠近输入层的地方提取的,用于后续学习,所以这种方法一般效果更好。但由于在预测阶段需要同时考虑两个输入信息进行成对相似度计算,计算成本较高,因此性能较弱,不适合*敏*感*词*相似度比较场景。
由于表示模型具有较高的应用性能,而且业界也开源了很多基于*敏*感*词*相似度语料训练的模型,这里我们选择目前比较流行的 Sentence Bert (SBERT) 作为相似度模型。SBERT使用了孪生网络,以下是分类目标函数的网络架构:
图 9 SBERT 网络架构
(引用:Sentence-BERT:SentenceEmbeddings using Siamese BERT-Networks
)
SBERT模型直接针对相似度(距离)进行训练,因此相比针对语言模型等各种通用目标训练的Bert,在相似度比较任务中得到的表示向量要好很多。在这个用例中,使用 SBERT 提取句子对的句子向量,然后根据余弦相似度,计算用户查询句和主题句的相似度值。与Bert相比,SBERT不仅在准确率上更准确,而且计算出的相似度值更具判别力,具有量化的意义,即可以通过相似度值来判断句子之间的差异程度(不像相似度值)。Bert给出的值只能用于排序,没有区别)。下面的例子:
05
结语
深度学习的一个问题是不可解释性,人类无法直接干预结果。本文提出了一种结合传统全文检索和向量语义相似度比较的无监督学习方案。通过在召回阶段根据主题词进行预过滤,将后续排名限制在与主题词相关的范围内。可定义,从而让用户在一定程度上控制搜索结果。
总体来说,在快速迭代的需求下,该方案是一种有效且低成本的方案。此外,尽管无监督学习具有成本优势并在许多工程实践中受到青睐,但监督学习在准确性和其他性能方面的优势暂时无法替代。因此,从长期运行的角度来看,还是建议有条件的情况存在。接下来,尝试应用监督学习来促进更好的业务优化。