0%

知识图谱描述

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

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

知识图谱的构建步骤

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

第一天

概述

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

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

现在知识图谱领域中比较火热的是:风控。企查查可以查询企业的状态。 知识图谱核心技术可分为(大致就是一本书的目录): 1. 知识图谱的架构与设计 2. 知识图谱核心技术-知识源数据的获取 3. 知识图谱核心技术-信息抽取-关键词抽取(属性与数值) 4. 知识图谱核心技术-信息抽取-实体识别(深度学习+经典方案) 5. 知识图谱核心技术-信息抽取-关系抽取(深度学习+经典方案)

阅读全文 »

题目

有问题的解法1

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int nextNodeCarryValue = 0;
ListNode sum = new ListNode(nextNodeCarryValue);
ListNode s = sum;

ListNode t1 = l1, t2 = l2;
int a = 0;
int b = 0;

while(t1 != null || t2 != null){
// 计算和
int res = t1.val + t2.val;

int nodeValue = res % 10;
nextNodeCarryValue = res / 10;

// 先创建下一个结点
ListNode nextNode = new ListNode(nextNodeCarryValue);

s.val += nodeValue;

// 移动结点
t1 = t1.next;
t2 = t2.next;

// 顺便处理最后一个结点,这里的代码十分难理解
if((t1 != null || t2 != null) || nextNodeCarryValue != 0){
s.next = nextNode;
s = s.next;
}
}

// 进最后一位
// if(nextNodeCarryValue != 0){
// s.next = new ListNode(nextNodeCarryValue);
// }

//处理两个 ListNode 不等长的情况
ListNode t = null;
if(t1 != null){
t = t1;
}
else{
t =t2;
}
while(t != null){
s.next = new ListNode(t.val);
t = t.next;
}
return sum;
}
}
阅读全文 »

题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: > 给定 nums = [2, 7, 11, 15], target = 9 > 因为 nums[0] + nums[1] = 2 + 7 = 9 > 所以返回 [0, 1]

阅读全文 »

论文地址凉了。读完论文,发现论文中的实验是使用 python2 写的,而且由于没有 VPN 无法下载实验附带的数据,训练数据有 17G,我都不想下了。

引子

人机对话时,人们通常会提出许多问题,其中大部分都可以通过大规模的 KG 回答。为此,我们提出了 Comples Sequential QA(CSQA) 任务,它由以下两种任组成: 1. 在拥有百万个实体的 KG 上进行复杂的推理从而回答事实性问题; 2. 通过一系列连贯的链接问答对去学习交谈。

接着还让工作人员创建了一个数据集,包括总共 1.6M 轮的 200k 的对话数据。我们还要求数据集含有逻辑推理(logical),定量推理(quantitative)以及比较推理(comparative )的能力(此三种能力下面有详解)。因此这就迫使我们的模型要做到: 1. 解析复杂的自然语言问题; 2. 使用对话上下文解析表达中的共指(coreferences )、省略(ellipsis )问题; 3. 要求理清含糊不清(ambiguous )的问题; 4. 检索相关的 KG 的子图去回答这些问题。

说明: - 共指问题(coreferences):就是说一个代词指向多个对象,机器人无法理解具体指向哪个 - 省略问题(ellipsis):表达没问题,但是表达中省略了一部分信息,需要人自己去上文中推测 - 含糊不清的问题(ambiguous):(与 1 类似,请看 1)

阅读全文 »

组合

分类算法有很多,比如逻辑回归、kNN 算法、决策树、朴素贝叶斯算法、支持向量机等,它们各有优缺点。我们自然可以将不同的分类器组合起来,而这种组合结果则被称为集成方法(ensemble method)或者元算法(meta-algorithm)。使用形式多种多样,可以是不同算法的集成,还可以是相同算法不同配置的集成,也可以自行发挥。

bagging

自举汇聚法(bootstrap aggregating),也称为 bagging 方法。是从原始数据集选择 S 次后得到 S 个新数据集的一种技术。新数据集与原数据集的大小相等。 在 S 个数据集建好之后,将某个学习算法分别作用域每个数据集就得到了 S 个分类器。使用这 S 个分类器进行分类,然后将结果中最多的类别作为最后的分类结果。 当然还有一些更先进的 bagging 方法,比如随机森林(random forest)。

阅读全文 »

总结

代价函数 选择
binary cross entropy 典型选择:二元分类
cross entropy 典型选择:多元分类
mse 典型选择:线性回归

Softmax Loss

Softmax Loss 是由 softmax 和 cross entropy loss 组合而成,在 pytorch,caffe,tensorflow 等开源框架的实现中,直接将二者合并在一层。如在 pytorch 中不需要再输出层加上 softmax 层用于分类,直接使用 cross entropy loss 即可。

阅读全文 »

论文概要

我们提出使用一种神经网络结构结合知识库来回答自然语言(NL)问题。与之前端到端的语义解析器不同,NEURAL ENQUIRER 是完全“神经化”的:它提供查询和 KB 表的分布式表示,并通过一系列可微的操作执行查询。该模型可以通过 end-to-end 和 step-by-step 的监督进行梯度下降训练。在训练期间,查询和 KB 表的表示将与查询执逻辑(query execution logic)一起进行优化。实验表明,该模型可以学习对结构丰富的 KB 表执行复杂的 NL 查询。

论文内容介绍

阅读全文 »

论文概要

某篇解析某篇解析 论文地址。 本文提出一种神经语义分析方法——Sequence-to-Action,将语义分析当做一个端到端的语义图生成的过程。我们同时使用了最近语义分析两个有前途的方向,首先我们的模型使用了一个语义图来表示一个句子的含义,该语义图与知识库紧密相关(博主注:即可以将语义图看作是知识库的一个子图)。其次,利用神经网络强大的表示学习和预测能力,提出一种 RNN 模型,能够有效的将句子映射到动作序列,从而生成语义图(博主注:此动作序列就是指生成语义图的动作,将这些动作看作是一个序列)。实验表明该方法在 OVERNIGHT 数据集上展现了一流的性能,在 GEO 以及 ATIS 数据集上得到了有一定竞争力的性能。 语义分析旨在将自然语言句子映射为逻辑形式(Zelle andMooney, 1996; Zettlemoyer and Collins, 2005;Wong and Mooney, 2007; Lu et al., 2008;Kwiatkowski et al., 2013)。例如“Which states border Texas?”将会被映射为 answer (A, (state (A),nextto (A, stateid ( texas ))))。 语义分析器需要两个函数,一个处理结构预测,另一个处理语义基础。传统的语义解析器通常基于复合语法,如 CCG(Zettlemoyer and Collins, 2005, 2007),DCS(Liang et al., 2011)等。不幸的是,设计语法和学习精确的词汇仍是一个挑战,特别是在开放域。而且设计有效的特性往往很困难,它的学习过程也不是端到端的。为了解决上述问题,本文提出了两种有前途的研究方向:基于语义图的方法和基于 seq2seq 方法。

阅读全文 »