0%

2019 普开培训

第一天

概述

知识图谱是一种新型的数据库,是一种基于图的数据结构。每个结点表示现实世界中存在的“实体”,每条边为实体与实体之间的“关系”。以下为知识图谱的几点作用: - 从“关系”分析问题 - 把不同种类的信息连接在一起 - 一个关系网络

学习知识图谱首先得掌握以下几种技能: 1. 基础知识:自然语言处理、图数据库操作知识、基本编程能力:Python、SQL; 2. 领域知识:知识图谱构建方法、知识图谱推理方法; 3. 行业知识

现在知识图谱领域中比较火热的是:风控。企查查可以查询企业的状态。 知识图谱核心技术可分为(大致就是一本书的目录): 1. 知识图谱的架构与设计 2. 知识图谱核心技术-知识源数据的获取 3. 知识图谱核心技术-信息抽取-关键词抽取(属性与数值) 4. 知识图谱核心技术-信息抽取-实体识别(深度学习+经典方案) 5. 知识图谱核心技术-信息抽取-关系抽取(深度学习+经典方案) 6. 知识图谱核心技术-信息抽取-事件抽取(深度学习+经典方案) 7. 知识图谱核心技术-知识融合概述 8. 知识图谱核心技术-知识融合-实体链接-实体统一(深度学习+经典方案) 9. 知识图谱核心技术-知识融合-实体链接-实体消岐(深度学习+经典方案) 10. 知识图谱核心技术-知识融合-知识合并 11. 知识图谱核心技术-知识加工概述 12. 知识图谱核心技术-知识加工-本体构建 13. 知识图谱核心技术-知识存储与检索 14. 知识图谱核心技术-知识加工-知识推理 15. 知识应用-智能问答,风控,营销.... 16. 知识图谱核心技术-知识加工-知识更新 17. 知识图谱核心技术-知识加工-质量评估

基本任务主要研究方向: - 机器翻译 - 自动摘要 - 文本分类与信息过滤 - 信息检索 - 信息抽取与文本挖掘 + 实体抽取:命名体识别 + 关系抽取:关系抽取算法 + 事件抽取 * 地区、时间、过程 * 文本分类(为事件分类) - 情感分析 - 自动问答 - ……

自然语言处理与知识图谱的处理步骤: 0. 分词、语料库、文本分类、文本聚类、文本词性分析。。。 1. 信息抽取 2. 知识融合阶段 - 实体统一 - 实体消歧

分词

分类算法中的流程: (自然语言处理与知识图谱)-->分词-->(自然语言处理,与,知识,图谱,知识图谱)-->去停词-->(自然语言处理,知识,图谱,知识图谱)-->建立索引-->(1,2,3,432,66)-->one hot-->word2vec-->

语料库

jieba 分词同时基于一些语料库和手写的规则(如隐马尔科夫模型)。 如果想要加入自己的语料库可以使用下面的代码,语料库的格式可在 github jieba 上找到。

1
2
3
jieba.load_userdict('/home/python/dictionary.txt')
seg_list = jieba.cut(text, cut_all=True)
print(' '.join(seg_list))

  1. 词库
    • 医药知识图谱
      • 语料库(网上有现成的,不用自己爬,如:医药行业专业词典)
        • 医院的名称
        • 疾病的名称

文本特征提取

文本数据的表示模型: - 布尔模型(boolean model) - 向量空间模型(vector space model) - 概率模型(probabilistic model) - 图空间模型(graph space model)等

以下为几种主要的模型,它们的目标都是:建立文档的向量(矩阵)模型。加粗代表是现在常用的模型 1. TF-IDF 2. LDA 3. LSA/LSI 4. Word2Vec 5. one-hot 6. BERT 7. ...

TF-IDF

TF:词频 IDF:逆文档频率。 权重 = TF * IDF TF-IDF 可能会漏掉一些词。比如一篇文章只出现一次“周杰伦”,但是它已经表示了这篇文章的主旨。可是 TF-IDF 无法为该词分配较高的权重。 另外 jieba 中其实可以直接使用 TF-IDF。导入jieba.analyse即可使用。(TF-IDF 其实就是提取句子的标签)

1
2
import jieba.analyse as ja
ja.extract_tags(sentence, topK=3,withWeight=False, allowPOS=())

word2vec

TF-IDF 只考虑单个文字,忽略了句子中的上下文信息。而word2vec 考虑了上下文,输入值为某个单词的前几个单词、后几个单词和其本身。 word2vec 现成的工具包有:1)gensim;2)tensorflow;3)keras。 另外 QA 系统等应用可能不适合使用 word2vec 训练出来的单词。因为它训练出来的词向量没有捕获到太多的上下文信息。众所众知,QA 系统和对话系统等应用需要经常使用到很多上下文信息。

汉语处理的难点

汉语处理的难点
汉语处理的难点

NLP 工具包

  • 中文分词工具(粗体推荐使用,其他随意)
    • jieba下载地址。分词、ti-idf、标注。。。
      • 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
      • 精确模式:试图将句子最精确地切开,适合文本分析;
      • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
    • snownlp:下载地址。这个有点慢
    • Hanlp下载地址。功能较多,比如:
      • 中文分词
      • 词性标注(pos)
      • 命名实体识别(ner)
      • 关键词提取
      • 自动摘要
      • 短语提取
      • 拼音转换
      • 简繁转换
      • 依存句法分析
      • word2vec
    • pkuseg:下载地址。支持细领域分词,比如海洋、新闻、医药等。MIT 许可证,所以不可商用
    • THULAC:下载地址
    • fudannlp:不怎么更新了
      • fastNLP:复旦新开发的一个工具,做了很多模型的集成,如 BERT。
  • 英文分词工具
    • gensim:分词、主题分析等
    • spaCy文档

NER

所谓的命名体(named entity)就是人名、机构名、地名以及其他所有以名称为标识的实体。更广泛的实体还包括数字、日期、货币、地址等等。 难点:1)同义词、歧义词等;2)未登录词判定。 一般流程:1)基于规则的方法;2)基于模型的方法,常见的序列标注模型包括 HMM(Hidden Markov Model)、CRF(Conditional random field)、RNN。不过虽然基于模型的方法技术比较新颖,但是由于太过复杂以及太难解释,所以公司还是用基于规则的方法比较多。

序列标注

要做命名体识别,首先要做序列标注的任务。目前国家有以下几种标注体系: 标注体系 - 基于HMM - 基于CRF

上课的时候没听明白。

- 基于RNN

第二天

医疗命名体识别

使用 BIO 标注体系。 命名体识别模型训练步骤: 1. 准备数据:原始数据,即自然语言语句 1. 定义大类,如 BODY、SIGN、DISEASE。使用数据抽样的方法,2-3 周 2. 对原始数据进行标注:对原始数据进行人工标注,如右髋部 21 23 身体部位疼痛 27 28 症状和体征。data_orign 文件夹中有 *.txt 和 *.txtoriginal.txt 文件。其中 *.txtoriginal.txt 文件中是医生诊断的原始数据,*.txt 中是将原始数据中的特征标注出来(此步骤是人工操作。不过如果有很多数据,其实可以偷个懒,因为有些特征差不多,在一份病历中标注一次就够了。比如风寒会出现很多次,其实只要在一份病历中标注一次,之后就可以被程序识别到了,当然多标注几份也行),如果已经有字典,比如网上下载的,可以不进行此步。 3. 设置标注格式:如 IO、BIO、BMEWO 等体系。 4. 编写转换程序:将所有标注的病历数据按标注体系转换,并且合并在一份文件中。如:肺 DISEASE-B炎 DISEASE-I。详见:transfer_data.py。在 data/train.txt中。注:此标注方法不需要进行分词,因为它以字为级别。 5. 算法模型:LSTM 和 CRF 如何结合?请看下图。不管多大项目,词向量一般选 300 维 - LSTM - CRF BiLSTM + CRF LSTM+CRF例子 6. 算法预测:预测结果较差,可能是因为数据较少。

CRF 并不擅长提取属性,比如病人的受伤面积,可以使用正则表达式。 端到端训练就是一个模型到另一个模型的训练,比如LSTM + CRF。

中国人物关系图谱

讲到的技术

  • 命名体识别
  • 关系抽取

第三天

实体分词

重要内容提示:●交易简要内容:中海(海南)海盛船务股份有限公司将散货船“百花山”轮作为废钢船出售给江门市银湖拆船有限公司,出售价格为人民币17,183,633.49元。 ----分词为----> 重要内容, 提示, 交易, 简要内容, 中海, 海南, 海盛船务股份有限公司, 。。。 ## 命名体识别 识别所有命名体。 ### 企业实体识别 利用 foolnltk 工具包,对每个新闻做命名实体识别,并对企业命名实体做实体统一,最后将每个新闻中的企业实体替换为统一的企业实体。

实体统一/实体对齐

对同一实体具有多个名称的情况进行实体统一,将多个名称统一替换成一个命名实体。比如,“河北银行股份有限公司”和“河北银行”可以统一成“河北银行”。 大致来说这个应用是使用规则来做实体统一。目前(2019 年 7 月)来说,基于规则的做法大概能解决 70% 左右的问题。还可以使用余弦相似度,分类等算法进行融合使用。 - 分离出地名,比如河北,北京 - 去除后缀,比如有限公司,集团 - 提取经营范围,比如医疗,化学 - 剩余部分为中间字段 - 最后选择以上四个部分的某些部分进行拼接,成为一个唯一的命名实体,如果有中间字段,则仅使用中间字段即可,并对某些特殊的经营范围做补充,比如银行;否则,优先使用地名加经营范围,其次是地名加后缀。

更新命名体

在做完实体统一之后,将原数据中的实体进行替换即可

特征工程(关系抽取)

  1. 文本特征提取,采用 tf-idf
  2. 关键字抽取,比如转让,收购,整合等等
  3. 句法特征提取,主要是与核心词之间的关系,包括企业实体本身和前后词与核心词之间的关系,距离等。即抽取(实体,关系,实体)三要素特征
    • 依存句法分析
      • 依存树,demo
      • CCG
    • 分类器
  4. 拼接三要素 + tf-idf 特征

训练

将特征工程提取到的特征做 onehot 编码(不一定要是 onehot),利用随机森林进行模型拟合。使用贝叶斯超参数调优,调优参数为【决策树数量,决策树的最大深度,随机数生成器】。或者可以使用深度学习的算法,如神经网络。

补充

实体消歧

中文的不怎么好做,主要运用规则。

知识融合

实体扩充(融合外部知识图谱或者数据)。阿里巴巴实体链接框架

知识图谱构建步骤总结

  1. 数据收集(持续收集与更新)(关键词抽取命名体识别关系抽取事件抽取
    1. 原始数据,通常可能是一篇文章
      1. 爬虫技术
        1. 垂直爬虫
        2. 搜索引擎相关的爬虫
    2. 语料数据,通常词库,词典,同义词
    3. 开源的第三方知识图谱,例如搜狗人物关系图
    4. 开源的训练好的词向量(word2vec)模型,tfidf
  2. 图谱设计
    1. 实体定义(本体) 实体:实体类型
      1. 属性 例如,手(长度,面积),类别:身体器官
    2. 属性定义
    3. 关系定义
      1. 关系也需要定义类别
      2. 需要评估关系可以覆盖的数据量,一般服从28 原则,20%的关系,覆盖80%数据
  3. 知识清洗
    1. 实体消歧
    2. 实体统一
  4. 知识融合(实体链接)
    1. 实体与关系的融合
    2. 实体扩充(融合外部知识图谱或者数据)(知识合并
  5. 知识存储-图数据库

前三天的总结

  1. 知识图谱的架构与设计
  2. 知识图谱核心技术-知识源数据的获取
  3. 知识图谱核心技术-信息抽取-关键词抽取(属性与数值)
  4. 知识图谱核心技术-信息抽取-实体识别(深度学习+经典方案)
    1. 目的:抽取数据中的实体信息,例如人名
    2. 方法:
      1. 规则:(正则等)
      2. 模型:传统方法CRF,深度学习BiLSTM+CRF
    3. 过程:
      1. 按照CRF要求定义好实体的分类与标注体系
      2. 标注训练数据
      3. 编写BiLSTM+CRF模型
      4. 使用模型预测
      5. 组合预测的结果
      6. 纠错预测的结果
  5. 知识图谱核心技术-信息抽取-关系抽取(深度学习+经典方案)
    1. 目的:抽取实体与实体间的关系,例如:出生于
    2. 方法:
      1. 规则,例如:通过关键词,进行匹配
      2. 模型
        1. 传统
          1. 分类
            1. 基于CRF+LSTM,需要将实体标签变成关系类别的标签,进行预测
          2. 基于语法树
            1. 依托于语法规则,识别关系属于哪两个实体,要求是句子结构要短一点,如果很长,规则不好定义
          3. BootStrapping
        2. 深度学习
  6. 知识图谱核心技术-信息抽取-事件抽取(深度学习+经典方案)
    1. 目的:抽取内容中的事件,以及他们的关系
    2. 事 件关系的类型:
    3. 因果事件 某一事件导致某一事件发生 A导致B
    4. 事件预警 因果溯源 由因求果 <地震,房屋倒塌> 条件事件 某事件条件下另一事件发生 如果A那么B
    5. 事件预警 时机判定 <限制放宽,立即增产> 反转事件 某事件与另一事件形成对立 虽然A但是B 预防不测 反面教材 <起步晚,发展快>
    6. 顺承事件 某事件紧接着另一事件发生 A接着B 事件演化 未来意图识别 <去旅游,买火车票>
    7. 主要的方法:
    8. 规则
  7. 知识图谱核心技术-知识融合概述
    1. 目的:将信息抽取中,抽取的实体与关系,进行融合 例如,(曹操,父子,曹丕) (曹操,父子,曹植)
    2. 融合的层次-实体链接
      1. 实体与实体的融合
      2. 实体与外部数据的融合
      3. 知识图谱与知识图谱的融合
  8. 知识图谱核心技术-知识融合-实体链接-实体统一(深度学习+经典方案)
    1. 目的:统一实体的名称,例如杭州阿里巴巴集团,阿里巴巴
    2. 统一的方法:
      1. 规则:例如去掉杭州阿里巴巴集团的集团,与地区,比较与简称的差距
      2. 基于模型:如入A与B,判断是否为一个实体
      3. 基于文本相似度:例如使用余弦定理,
  9. 知识图谱核心技术-知识融合-实体链接-实体消岐(深度学习+经典方案)
    1. 目的:消除实体间的歧义
    2. 方法:
      1. 结合语境, 例如该文章类别如果是3c数码类文章,那么小米指的是小米 然后进行实体补全
  10. 知识图谱核心技术-知识融合-知识合并
    1. 实体与实体的融合
    2. 实体与外部数据的融合
    3. 知识图谱与知识图谱的融合
  11. 知识图谱核心技术-知识加工概述
  12. 知识图谱核心技术-知识加工-本体构建
  13. 知识图谱核心技术-知识存储与检索 - Neo4j create
    • (:Movie {title:"驴得水",released:2016}) return p;
    • (p1:Person {name:'Alice'}) -[:KNOWS][->(p2:Person {name:'Bob'})
  14. 知识图谱核心技术-知识加工-知识推理
  15. 知识应用-智能问答,风控,营销....
  16. 智能问答应用 1. 如何实现基于知识图谱的智能问答?
    1. 对用户输入的问题进行语义分析
    2. 问题分类
      1. 问题的类型分类:例如,冬天下雨怎么办,是咨询类问题
      2. 问题的问形式上的分类,例如,怎么办,如何办,去哪办
    3. 问句解析
      1. 实体提取,例如,中国移动真不错,提取了中国移动实体
      2. 意图的预测,例如,万达怎么去,预测客户是想买东西
      3. 问题补全,例如,周末去哪吃比较好---->周末去哪(万达附近)吃饭比较好
      4. 其他重要词汇识别
    4. 将解析过的语句,转换成:cql等图数据查询语句
    5. 将查到的结果,结合之前的问题分类与模版,进行模板填充,反馈给客户
    6. 风控
    7. 营销
      1. 亲人圈发现
      2. 朋友圈发现
  17. 知识图谱核心技术-知识加工-知识更新
  18. 知识图谱核心技术-知识加工-质量评估

第四天

等于没学。搞了一天的环境配置。

第五天

图谱构建流程概览 图谱构建流程在第十五讲 PPT。

第六天

第十六讲实验步骤。