基于知识图谱的厨房领域问答系统构建

1 厨房领域的问答系统

智能厨房主要分为4个部分

  1. 菜谱. 通过问答系统,你可以知道哪一道菜,比如说红烧肉怎么做等等
  2. 音乐. 比如,说“我想听一个轻松的音乐”
  3. 视频. 比如,说我想看《人民的名义》第九集
  4. 厨电的控制. 指令式反馈,比如,打开油烟机,打开灶具,类似于一个中控系统

整体流程:

  • 语音识别. 科大讯飞和思必弛较为出众,目前调用的是科大讯飞的接口
  • 文本纠错. 一、概率模型(马尔可夫链)。根据语料库做一个字跟词之间,序列这样的一个概率模型。那么一句话来了之后,可以根据这个词出现在下一个词的概率来进行纠错。二、将实体与已有的实体库进行对比纠错。
  • 垃圾过滤. 系统有5个类别,4+1,(个人猜测是将不属于上述四类的语句分为一类,另外一类是其他),垃圾过滤主要是为了区分以下几点。第一,区分是否和机器在对话;第二,将对话中的一些“无用词”过滤掉,只留下实体和属性等,主要用检索的方式实现(与已有的实体库进行对比)。
  • 文本分类. 对问句进行类别分类(5类),这里的类别指的是菜谱、音乐、视频、厨电控制,其他等类别。分到具体类别后,再抽取该类别的实体及属性。
  • 实体及属性抽取,逻辑表达式生成,SPARQL查询生成. 这里用一个小例子概括。得到问句“红烧肉怎么做?”,首先提取实体(红烧肉)和属性(做),然后生成逻辑表达式,主要分为“与或非”之间的关系,如辣不辣是“非”的关系;最后生成SPARQL查询语句。
  • 数据库查询, ES检索. 如下图:

2 知识图谱技术的运用

2.1 整体框架

2.1.1 数据存储

  • 基础数据

菜谱的图片数据等庞大的数据集,放在 Hbase 里面;然后通过 MapReduce 的程序得到结果,如果需要这个结果,就把它同步到Mongodb里面去。 Hbase Mongodb 各有优势,Hbase 写入的速度比Mongodb快很多,但是它读取的速度,不如 Mongodb,因此,Hbase 主要做基础数据的存储,Mongodb 用于呈现数据,如果有一些关系性特别强的数据,会放在 Mysql 里面。

  • 图数据

主要采用OWL(Web Ontology Language)表示,伴随RDF(Resource Description Framework)表示,因为参考了很多的论文之后,OW L其实是比 RDF 更先进的一种方式。对于大量的数据存储,必须要找一个持久化的工具,最后采用TDB,没有采用Neo4j,是因为Neo4j收费,并且节点的个数有限。

  • 索引数据

对于一些索引的数据,比如说小的指令级的,上一页、下一页、翻页、换页这样的生成并不多,并且它们匹配的准确率又非常高,这个地方,可能就不需要做泛化,因此可以把它放到 Trie 树里面;一些实体会放到 Elasticsearch 里面查询;还有一些小的数据集也要索引,就会放到 Lucene 里面;之后的缓存数据,还是用的 Redis 这样的一个分布式的缓存处理。

2.1.2 数据采集

问句生成。同一个问题的问句是非常多的,首先对输入问句进行分析,找到“种子问句”,然后对它进行分词,把每一个词用word2vec 寻找相关的词(比如国外-男人=女王-女人),相关的词把它们的位置序列记好,然后做笛卡尔积。这样的做完了,会生成大规模这样问句的数据,当然里面有一些是不正确的句子,这个时候用文本纠错的马尔可夫链的概率图模型去纠正它,最后人工筛选。第二种方法是,收集200多个跟菜谱相关的动词,以及相关的同义词,利用文本生成,生成问句。这里推荐OpenKG

2.1.3 知识库构建

  • 知识融合

首先做时序融合,就是之前做的实体,它的实体链接是不是根据时间的推理,而它换掉了它本身的这样一个含义,进而做本体的扩充(不太懂)。多源融合,做一个实体的匹配和概念的对齐。

  • 知识计算

抽出实体和属性

2.1.4 数据访问

分为4个部分。1.SPARQL查询 2.自然语言查询 3.SDK的方式 4.逻辑表达式,后台将其转化成SPARQL语句

2.2 知识图谱的构建

不辣的查询比较耗时,原因是因为标签没有不辣,因此要把所有的属性都查一遍。后来的解决方法是离线去处理,比如是甜的,那它一定不是辣的。

3 曾经踩过的一些坑

知识图谱里面的搜索是有一个问题的, ElasticSearch 检索里面的排序其实是非常容易去做的,本身底层就写了一个排序打分的 TF-IDF。而用知识图谱的时候,它附近的这些节点的权重都是一样的。比如说土豆能做什么菜,那么查询出来所有的菜的权重都是一样的。知识图谱里面,映射的本身是扁平的,比如土豆这个节点,能够查询很多菜谱,发现有些所列出来的那些菜大家都不认识,会造成糟糕的体验。解决方法:在知识图谱的属性当中,加了一个热度的一个值,热度主要是通过点击次数去计算,然后根据热度排序。

4 遇到的一些挑战与困难

1. 跨领域问题除了基础工作,比如查询等方式不会有太大的改动,但是属性是要重新设定的。

2. 语义理解还没有达到一定的高度。当下主要还是在于文本分类+属性抽取+逻辑表达式,但是用多大的数据量可以将一句话直接运用到知识图谱中去还需要继续探究。

- end -

Tip:索答科技已经将 50w 菜谱本体信息在 OpenKG 上开放出来,每个菜谱包含菜名,食材,味道,烹饪时间等属性。链接

http://openkg.cn/dataset/summba-recipe

reference:

https://zhuanlan.zhihu.com/p/29177019

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值