基于知识图谱的问答系统3【代码学习系列】【知识图谱】【问答系统】

本文介绍了如何基于jieba和知识图谱构建一个电影问答系统,重点在于实体提取和意图分类。实体提取利用jieba的词性标注,而意图分类采用了基于Tfidf特征的朴素贝叶斯模型。代码来源于github,详细阐述了训练数据构建、模型训练和预测的过程。
摘要由CSDN通过智能技术生成

1 代码来源

本代码来源于github项目地址,项目使用python实现一个简单的基于知识图谱的电影问答系统,相关搭建过程见博客300行python代码从零开始构建基于知识图谱的电影问答系统-目录:。这里通过横向比较基于知识图谱的问答系统1基于知识图谱的问答系统2,来分析说明不同之处。本项目的与前两个项目在实体提取和意图预测方面存在不同之处。前面两个项目的实体提取通过AC树匹配实现,本项目则直接通过jieba分词中的词性分类来实现,意图预测部分,本项目与基于知识图谱的问答系统2](https://blog.csdn.net/weixin_44023339/article/details/100012074)相同,都是采用基于Tfidf特征的朴素贝叶斯来实现的,但本项目给出了朴素贝叶斯的训练过程。
项目界面

2 基于jieba的实体提取

jieba不仅可以分词,还可以对词性进行标注,具体可参见jieba分词词性说明。项目基于知识图谱实体类别与名称构建字典,然后加载到jieba中,实现输入语句相关实体的提取。

(1)字典内容

用户字典每行一个词,格式为:
词语 词频 词性
其中词频是一个数字,词性为自定义的词性,要注意的是词频数字和空格都要是半角的。

// userdict.txt
英雄 15 nm
袁咏仪 15 nr
战争 15 ng

字典加载方式为

// 字典加载
import jieba
jieba.load_userdict("./userdict.txt")

由于nr在jieba中的原有词性也是人名,因此随便问一个人名主演的电影,程序都会产生知识图谱的查询操作,但会返回没有结果,因此可以把字典中的nr、ng改为其他非已有词性,提高程序效率。
但从后面的意图分类训练来看,演员是用nnt表示,因此项目在此方面存在不一致,统一同nnt表示演员是合适的,不会与已有的词性混淆,ng表示类型,nm表示电影。

(2)实体提取

jieba通过jieba.posseg进行词性标注。

// 字典加载
from jieba import posseg
# raw_question="刘德华主演了什么电影?"
clean_question = re.sub("[\s+\.\!\/_,$%^*(+\"\')]+|[+——()?【】“”!,。?、~@#¥%……&*()]+","",raw_question)
question_seged=posseg.cut(str(clea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值