2021“智荟杯”浦发百度高校极客挑战赛方案赛总结(二)
我们做的是一个基于理财知识图谱的智能交互系统,可以通过语音和打字输入来实现人机对话,通过tinker实现了图形化界面。为了解决人工客服在工作中可能出现的工作懈怠、疲惫、态度不好、业务能力差解释不清用户需求等问题。主要是分为两个功能,一个是基本的银行业务咨询,通过提前准备好的问答语料进行训练。当客户通过语音或文字进行输入就能通过文本语义相似度匹配实现返回对应的答案。另一个是根据股票信息制作的理财知识图谱,这个知识图谱是基于neo4j图形化数据库实现的。另一个同学完成了这个数据爬取和数据清洗的过程,将从网页中抽取到的公司董事信息、股票行业信息和概念信息等整个为对应的csv文件,然后我将这些csv文件导入到neo4j数据库中。我们思考我们会面对股票知识需要提出什么问题,然后将数据存储到数据库中,最后就是提供查询,推荐等功能的应用。
具体的基于知识图谱的问答是首先通过jieba这个分词库,将各个特征词进行分割,排除无关词语,再解析特征词,判断特征词是面向那些具体问题,然后将这些问题列举出来,再根据不同的问题编写不同的cypher查询语句进行查询,最后将返回的结果作为输出,通过语音和文字展示出来
举例:sql = ["MATCH
(n:Company)-[:industry_of]-(m:Industry)-[:industry_of]-(q:Company) where n.name = '{0}'
RETURN n.name, q.name LIMIT
10"
解释:根据已知公司名称获取相同领域的其他公司名称,限制数量10个,返回已知公司名称和十个同产业领域其他公司名称。
情感分析:我们的情感分析用的是snownlp这个库,然后是找的自己的weibo_senti_100k数据集,是一个带正负向评论的数据集。用这个数据重新训练。然后在实际的程序中,调用库将用户输入的文本先进行分词 ,计算每个词在训练的正负样本中出现的频数,由此判断出现的概率,选择其中概率更大的类别。
最后情感分析的效果是一个0到1的小数,用来表示文本情感积极的概率。一般是大于0.6就是积极,小于0.2是消极,但是我们在测试的过程中发现有的时候用户表达着急的用词在计算后并不是特别低,所以我们小幅度提升了阈值到0.35。
改进的话:发现其分词效果和情感分析的准确率有待提升,因为这个库在分词的时候无法识别出特定的否定短语,比如说“不喜欢”,会分成不+喜欢。情感分析时候“不”在负样本中出现的概率很大,导致整个句子会更偏向负面,会导致最后影响情感判断。后续的优化是通过另一个中文分词库jieba中的lcut替换snownlp的seg分词方法,通过增加自定义短语库,提高情感判断的准确性。
知识图谱:我们的股票数据是从网上获取的,由同花顺个股的⽹页爬取董事的信息,然后通过财经数据接口包Tushare抽取股票行业信息和概念信息,将这些信息生成相对应的csv文件,再将这些文件导入到neo4j的数据库中,就生成了我们的知识图谱。
知识图谱的搭建首先就是我们思考我们会面对股票知识需要提出什么问题,然后将数据存储到数据库中,最后就是提供查询,推荐等功能的应用。
语义相似度:我们的语义相似度使用了hanlp这个库,采用word2vec通过训练,通过内容表征语义,把对文本相似度的处理转化为K维度向量空间中的向量运算,再将空间上的向量相似度用于表示文本语义上的相似度,从而达成短文本的语义相似度计算。
知识图谱的问答: 知识图谱的问答是首先根据问句中的关键字进行分类,然后根据分类转入对应的解析函数对问句进行解析,将问句中的关键词提取出来,再在neo4j数据库中用cypher语句进行相应的查询,将查询的后返回的数据进行处理后作为答案输出。
知识图谱的改进:我们的知识图谱的主要问题还是数据都是从互联网上获取的,信息的准确性、实时性、可靠性都还有待考量。一方面就是提升知识图谱的数据量,另一方面就是增加对知识图谱中数据的抽取,将之在我们的智能客服系统中更好的体现出来。
基础的智能客服问答:基本的智能客服的问答是用的语义相似度计算,准备了对应的语料库,通过计算问句的语义向量,将之与语料库中问句的语义向量进行遍历并计算,然后将相似度最高的问句对应的答案进行输出,同时通过语音模块进行播放。
改进的话:考虑从两个方面进行改进,一个就是我们目前对语料库进行遍历的效果很慢,所以他查询的速度不行,我们考虑在将这个基础的客服问答查询也改成基于数据库的,通过关键词的查询方式进行回答,并且在使用数据库的基础上,扩充语料数量,使得能够回答的问题更多。另外就是我ppt里提到的,如果能获得一些相应的接口,比如可以查询用户的银行账户之类的信息,甚至可以直接通过智能客服相应对应的关键字,进行对某些业务的直接处理,而不是回答问题这样子。
关于语音:语音那块我们最开始使用的是基于PaddlePaddle(百度飞桨)的DeepSpeech做的,但是在做的过程中我们发现我们在抗噪声干扰和文本校正方面遇到了困扰,因为时间关系我们改用了百度的语音解析与合成的api,将用户输入的语音通过百度的接口进行解析转为文字,在本地对文字进行处理,再将文字通过语音合成后播放。
为什么使用知识图谱: 传统推荐算法存在推荐性能不佳,存在数据稀疏以及冷启动问题,知识图谱构建了一张巨大的网络结构,覆盖了推荐系统中大量数据信息,通过知识图谱网络的连接,输入数据之间连接,利用网络结构捕捉数据潜在关系,可以更好地提高推荐性能,同时通过知识图谱中节点与节点之间的连接,为推荐系统的可解释性方面也带来了一定的价值。
知识融合:对数据进行加工处理和整合的过程,挖掘隐含知识,寻找潜在知识关联,进而实现知识的深层次理解,在知识抽取的工作基础上进行实体对齐,并进一步通过人工核验剔除错误对齐项
模式层的构建: 知识图谱构建中模式层主要依赖前期整合的多源数据,对金融证券知识图谱涉及的术语、概念及关系进行抽取与定义,并提供一套明确的知识表示规范框架,以便于明确图谱的概念边界。设计了三种金融关系创建“人”和“公司”的关系,这个关系有董事长、执行董事等等,创建“公司”和“概念”的关系,创建“公司”和“行业”的关系
感谢:主要是借鉴了这两个github项目的代码和思路:
利用网络上公开的数据构建一个小型的证券知识图谱/知识库:https://github.com/lemonhu/stock-knowledge-graph
QASystemOnMedicalKG:https://github.com/zhihao-chen/QASystemOnMedicalKG
总体程序后续整理后上传github
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库