知识库构建-Knowledge Base

版权声明: https://blog.csdn.net/neu_chenguangq/article/details/52516651

基本概念

知识的表示框架

实体

世界上存在的事物的名称。比如人名、学校、地名等等。

关系

关系是人对事物的认知,如有哪些属性、和其它事物有什么联系。

基本构架

First Line

直接从垂直网站上爬取数据

结构化知识获取

这个阶段主要是从网上爬取一些带结构化知识的网站。比如维基百科、互动百科、百度百科都有一些信息盒子。
得到的数据如下:
鲁迅 配偶 朱安

知识库验证和整合

Neo4j

Second Line

从文本数据中挖掘关系

纯文本数据获取

数据加工

分句,为了便于后续操作。我们先将所有文章按照句子进行换行。(这个在学校有工具。)

关系抽取

bootstrpping。

bootstrpping算法

这是一种步步为营的算法,也称为自举法。(参考于中科院自动化所的韩先培老师)

步骤:
初始化

  • 一些种子实体对: (北京 中国),(巴黎 法国), (华盛顿 美国)

扩展

  • 新模板: E1 是 E2的首都, E2首都是E1,E1的首都位于E2………
    - 新实例:(东京 日本), (堪培拉 澳大利亚)

MyWay(关系抽取)

现在一般的做法是先做语句的预处理,分词、去停用词、语句依存分析、提取关键词、实体识别。这样来抽取一个关系。

但这里我用的是反过来,先模式匹配,再做句子分析。这样可以降低分词错误率导致的句子舍弃。

这里我们只能两实体间的新的关系,得不到新的实体对。(没有形成关系模板)

Step1: 分类
将同学们收集到的三元组按照实体进行分类。比如之前收集到了(周恩来 祖籍 浙江)就分为(周恩 * 浙江)一类。

Step2: 模式匹配
比如有(周恩来 * 浙江)该模式就可能匹配到如下句子:

  • 周恩来 出生于 浙江
  • 周恩来 于1956再次访问 浙江
  • ……

Step3: 语句处理
将选取出的句子进行处理。分词,去停用词、语句依存分析、提取关键词(其实可以用jieba分词,他们是利用的TF-IDF做关键词的抽取)。

(其实这里可以用这些找出来的句子去匹配其它的句子,这样可以发现新的实体对)

Problem

这种弱约束匹配会引入噪音实例和噪音模板,而且随着迭代的进行,噪音会越来越大,不可忽视
如: 由关系种子:(周恩来 祖籍 浙江)
得到模板 :
          E1 祖籍 E2
          E2 是E1的祖籍
          E1 来到 E2 //噪音模板   

得到新的实例:  (毛泽东 祖籍 湖南)
        (习近平 祖籍 陕西)
        (李克强 来到 辽宁) //噪音实例

感悟

这里有两种选择、分类模板的方式,第一种就是确定实体,来找相同实体的不同关系,此时就是按照实体来进行分类。还有一种就是确定关系,来找能表达相同关系的不同语法,此时就是按照关系来分类(这个也就是不同来源知识的整合),然后也是按照实体来匹配,这个时候就会发生严重的语义漂移问题。

阅读更多

没有更多推荐了,返回首页