APP下载

语音问答在地区电网调度专业培训中的实践

2023-01-16李焕奇綦雪松

东北电力技术 2022年12期
关键词:数组分词实体

刘 诗,李焕奇,綦雪松

(国网吉林供电公司,吉林 吉林 132011)

能让机器像人一样用语言来沟通,是人工智能的重要任务之一。用户和具有智能问答系统的手机之间通过一问一答的形式进行交互,让手机为用户提供答案的智能问答系统,是利用碎片化时间学习专业领域问题的有效培训方案[1]。目前智能交互系统研究已较为成熟,但由于电网调度系统的复杂性与专业性,用于地区电网调度的智能问答系统并不多见[2-4]。

地区电网调度是地市级电网正常倒闸操作和事故及异常处理的指挥机构,所面向的对象是地区电网。地区电网由一个个以一次变电站及其所带线路以及二次变电站和用户构成的分区网组成,分区网由变电站和连接变电站的线路构成,变电站由母线、主变压器(以下称主变)、无功补偿装置、站用变压器(以下称站用变)、消弧线圈、保护及自动装置等一、二次设备构成。由这些电网、分区网、变电站、母线、主变、设备、线路等电网构成要素作为定位实体特征词以及其间相连接的拓扑关系,就可以通过人工预定义规则将其设计成实体词表,构建成知识库,应用知识推理和规则推理,实现智能问答对话功能。

1 系统概述与总体架构

1.1 开发工具与所用数据库简介

本系统利用火山安卓软件开发平台制作,程序运行在安卓系统移动设备上。火山软件开发平台是一个目的硬件设备无关、目的软件环境无关、完全本地化的软件快速开发平台,使用者无需掌握太多的专业编程知识,即可快速开发高效实用的各类应用软件[5]。

本系统的数据采用SQLite存储。SQLite是一款体积小、性能高、支持各种软硬件平台、提供多种语言接口、支持SQL查询、视图、触发器等机制的轻型数据库,是一个进程内的库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎[6,7]。其已内嵌于安卓系统中,无需安装和配置。

1.2 系统界面与总体设计思路

本系统的主UI界面采用火山安卓的界面布局设计器设计,最底层的启动类是一个安卓无标题白色窗口,其上放一个纵向线性布局器。整体构思是仿QQ和微信界面,通过多个线性布局器按不同纵横比例的属性设置和一个布局在纵向滚动容器上的气泡聊天框来实现类似于QQ和微信中的左、右交替效果的对话列表显示。按钮及控件背景图用XML安卓背景制作工具制作。本系统的主UI界面的实际效果如图1所示。

图1 系统的主UI界面截图

本系统作为地区电网调度专业培训用的智能问答系统,依赖的是地区电网实际拓扑结构和电网调度专业知识,知识集中在地区电网调度领域内,由经验丰富的老调度员制作的人工预定义规则能够有针对性提供良好的知识推理,知识库中的表结构即为人工预定义规则。

本系统实现的知识问答,实际上是对预先存储在知识库问答对表中的问题进行搜索与匹配,根据地区电网调度专业涉及问题的实际情况,在对问题进行分词处理时,将问题分词划分为实体分词和非实体分词,再分别给予不同的权重,即每匹配上一个分词,吻合度判据加不同的分数,最终找到吻合度判据分数最高的问题对应的答案,将其用TTS语音播放出来。

1.3 系统的架构与功能模块

本系统主要包含系统设置、知识库维护和语音问答3个功能模块,3个功能均可通过UI界面上的按钮进入。系统设置按钮只有在APK安装后首次开启时才可直接进入设置,是通过读写一个保存在系统资源文件夹中的config.txt文件实现的。在设置文件中,每个变量值占一行,包括系统名称、注册信息、问答虚拟人物的昵称等内容。知识库维护模块提供了对库中各表内容进行增、删、查询和导入功能;问答模块是本系统的主体,实现语音问答功能。总体架构和功能如图2所示。

图2 系统架构与功能框图

2 知识库及其维护

2.1 知识库的构成及作用

本系统的知识库是一个名为zsku.db的SQLite数据库,库中有4个表,分别是实体词表、同义词表、停用词表和问答对表,其中同义词表用于词义消歧、停用词表用于剔除无关紧要的虚词和标点符号,这2个表都用于实体规范化;实体词表中结构化存放着本地区电网内分区网(系统)、变电站、发电厂名称及其具体设备名称和描述设备属性的实体词,用于实现从问答对中匹配出提问的问题;问答对表中存放的是一问一答的问答对,只要搜索到了问题,答案也就找到,因为问题与答案具有相同的ID,查询和维护管理都比较容易。

2.2 实体词表

实体词用于对提问问句文本进行分词,其中定位实体词用于在实体词表中定位其所在行ID,用定位实体特征词来识别该实体词是否为定位实体词。定位实体词每行一个,排在行首,主要有:地区、系统、变电站、线路、主变、母线等;本行其他实体词均为其属性或其所连接的设备,主要有:参数、电容器、站用变、消弧线圈、保护、自动装置、运行方式、维护单位、所带负荷等。

2.3 停用词表和同义词表

停用词用于剔除问句文本中无实际意义的虚词和标点符号,主要有“什么、是、的”和“问号、逗号、句号”等。停用词表每行一个停用词,在程序中用空字符替换停用词。同义词用于词义消歧,同义词表是每行一个同义词对,一个为实体别名,一个为规范同义实体词,通过同义词表把平时具有别名和不规范的口语化名词,统一替换为规范实体词,在程序中通过文本替换函数过滤后,提问问句中的实体词得以规范化。

2.4 问答对表

问答对表是一问一答的2段文本,在表中占同一行,具有相同的ID,只要程序搜索到问题,其答案也就同时被找到了。程序将找到的答案文本用TTS播放出来,就完成了一轮语音问答,因此本系统的关键问题在于如何搜索到提问的问题。

2.5 各表的维护

本系统在封面欢迎页上提供了维护入口按钮,点击后可进入各个表的维护页面,不但设计了查询、添加、删除和修改功能,而且还设置了由给定utf8格式的txt文件导入数据功能,导入数据时有在尾部追加和清空后导入2种选择。修改txt文件需要用文本编辑工具打开或在PC机中按格式编辑好后再传入移动设备中。

zsku.db和config.txt文件作为安卓外部资产,在系统首次安装时便被写入到其所在文件夹下,每次重启时都会自动检测文件是否存在,若已缺失则会自动补全,若已存在则不会覆盖,以保证文件内容为最新。

3 语音问答的实现

语音问答的实现是本系统的主体和核心,包括输入输出、实体规范化、语义解析和问答匹配5个功能模块,详细流程如图3所示。

图3 语音问答实现流程

3.1 输入与输出

输入模块的功能是将用户的提问语音转换成文字,让机器具有听的能力[8];输出模块是将系统查询到的答案文字转换成语音,让机器具有说的能力。本系统的输入和输出采用的是火山安卓封装的“讯飞语音支持”模块。用讯飞在线语音识别类实现语音到文本的转换功能;用讯飞在线语音合成类实现文本到语音的TTS语音输出[9]。

由于系统面向地区电网调度用户,有很多辖区内电网中的自定义名词在通用的语音识别模型中不能很好地识别,因此系统利用了讯飞输入法先将语音识别成文字到文本框,由用户校正确认后再发送到系统,这样可以利用讯飞输入法的添加个人语音词库功能,批量添加自定义名词以提升识别准确率。

3.2 实体规范化

由麦克风输入的语音经讯飞输入法识别出来的原始问题文本经词义消歧和过滤停用词后即完成了实体规范化,输出的是净问题文本。其中词义消歧是通过将具有一个和多个别名的实体词全部替换为实体词表中可查到的规范词来实现的;过滤停用词是通过将无实际意义的虚词和标点符号替换为空字符实现的。

3.3 语义解析

语义解析是通过实体识别形成实体数组和非实体数组实现的。实体识别即用实体词表为字典对净问题文本进行分词处理,找出净问题中的实体词,形成实体词数组[10]。首先在问题文本的前半部分搜索定位实体特征词,如果找到则将该定位实体特征词前的定位实体提取出来,如果没有找到且多轮问答判据为真,则将上轮定位实体取出赋值给本轮,完成词槽填充,并将定位实体词赋值给实体词数组0元素。然后在实体词表中搜索定位实体词,找到后遍历该行其他实体词去逐一匹配净问题文本,将匹配到的词赋值给实体词数组1及以后的元素得到完整的实体词数组。最后将挖去实体词的净问题文本进行逐字分割,得到非实体词数组。

3.4 问答匹配

首先用实体词数组中的每一个元素去遍历知识库问答对表中的问题文本,并用包含文本函数对其进行匹配,每匹配到一个元素,就将该ID的问题吻合度判据加5分。然后再用非实体词数组中的每一个元素去遍历知识库问答对表中的问题文本,并用包含文本函数对其进行匹配,每匹配到一个元素,就将该ID的问题吻合度判据加1分。最后将各问题ID吻合度按分数由高到低进行排序,当问题吻合度判据分数相同时以问题文本长度最短者优先。这样,分值最高者即为最吻合的问题,其ID对应的答案即为要寻找的答案。如果吻合度小于2,表明问答对表中没有与此匹配的问题,则用“这个问题我还没有学会,你能告诉我答案吗?”进行兜底回答,然后将你告诉的答案和刚才提问的问题组成一个新的问答对添加到库中,完成自我学习的知识积累过程。

3.5 多轮问答与词槽填充

在多轮问答过程中,提问者不断发问,在口语化的问句中就会省略很多前面已经提到过的内容,这样就需要对上轮实体数组和上轮非实体数组进行提前备份,用来填充本轮实体数组和非实体数组中缺失的元素,才能得到完整正确的回答内容。通过判断用户所提问题是单轮对话还是多轮对话、若为多轮对话则要进一步判断提问中缺失的是否为定位实体,然后分3种情况进行处理。系统默认第一问为单轮。举例说明如下,效果见图1。

第一问:龙潭变电站主变容量是多少?

经词义消歧、过滤停用词和分词处理后问题净文本变为[龙潭变][电][站][主变][容量],实体分词数组为{[龙潭变][主变][容量]}、非实体分词数组为{[电][站]},其中[龙潭变]为定位实体,通过它可识别出问题意图范围在龙潭变,用其定位实体词表的ID。再同该ID的其他实体词去匹配问答对表中的问题,从而找到答案。然后程序会将这些分词备份到“上轮实体数组”和“上轮非实体数组”变量中。

第二问:那土城变的呢?

经词义消歧、过滤停用词和分词处理后问题净文本只剩下[土城变]一个定位实体,其他部分全部为空。此种情况程序会将数组中缺失元素用先前备份过的上轮数组元素填充,从而得到完整的问题:[土城变][电][站][主变][容量],再按第一问的办法搜索到答案。

第三问:再说说消弧线圈吧。

经词义消歧、过滤停用词和分词处理后问题净文本只剩下[消弧线圈]一个实体元素,定位实体和非实体分词数组全部为空。此种情况程序亦会将数组中缺失元素用先前备份过的上轮数组元素填充,从而得到完整的问题:[土城变][电][站][消弧线圈][容量],再按第一问的办法搜索到答案。

如此反复,便可实现单轮和多轮的各种问答。

4 结语

以火山安卓为工具,开发了地区电网调度智能问答系统,验证了人工预定义规则在地区电网调度专业领域内规则推理的有效性,提高了调度员培训的灵活性,为充分利用碎片化时间进行专业领域培训提供了一个良好的途径。

猜你喜欢

数组分词实体
JAVA稀疏矩阵算法
分词在英语教学中的妙用
JAVA玩转数学之二维数组排序
前海自贸区:金融服务实体
结巴分词在词云中的应用
结巴分词在词云中的应用
实体书店步入复兴期?
更高效用好 Excel的数组公式
两会进行时:紧扣实体经济“钉钉子”
振兴实体经济地方如何“钉钉子”