赞
踩
DeepDive是一种新型数据管理系统,能够从非结构化的文本中提取出结构化的数据,可以在单个系统中解决提取,集成和预测问题,使用户能够快速构建复杂的端到端数据管道,例如黑暗数据BI(商业智能)系统。通过允许用户端到端构建系统,DeepDive允许用户专注于系统中最能直接提高应用程序质量的部分。相比之下,以前基于流水线的系统要求开发人员构建提取器,集成代码和其他组件 - 而不清楚他们的更改如何提高其数据产品的质量。这种简单的洞察力是DeepDive系统如何在更短的时间内生成更高质量数据的关键。
通过DeepDive,可以提取实体间的复杂的关系,并推断涉及这些实体的事实。
加载原始输入数据
我们的第一个任务是下载巨潮资讯网提供的公告文章集的原始文本并将其加载到我们数据库的articles表格中。我们创建一个简单的shell脚本,以TSV格式下载和输出新闻文章。DeepDive将自动创建表,执行脚本并加载表,如果我们将其保存为:input/articles.tsv.sh
上述脚本读取语料库的样本(作为JSON对象的行提供),然后使用jq语言提取字段id(对于文档id)和content每个条目并将它们转换为TSV格式。
接下来,我们需要声明本的架构articles表中我们的app.ddlog文件 ; 我们添加以下行:
articles(id text,
content text).
添加自然语言标记
deepdive默认用standford nlp进行文本处理,可以返回句子的分词、lemma、pos、NER
自然语言处理 Natural Language Processing
分词:首先是中文分词,在一句话中,我们要把词分出来,而不是光看单独的子。比如 我 今天 很 高兴 选择合适的字组成合适的词来构成句子
lemma:词元,这个是指这个词实质上的含义,比如cat,cats他们有相同词元。
pos:词性标注,最基本的是动词、名词等等
NER:Named Entity Recognition,可以识别出地名、人名、组织等等
抽取候选关系
前面都是通用的步骤,不论抽取什么样的关系,什么类型的实体,都要先对文章进行处理,分词、标记。但是到了这一步,我们就是要按照我们的任务去安排了。
既然我们要抽取公司间的交易信息,首先要得到文本中的公司是谁,才能进一步知道他们有没有关系,这一步就是要抽取这些公司啦。一共分两步:
抽取候选实体
如何从这一堆文本里得到公司的名字。在nlp处理中有一个步骤是命名实体识别(NER),这个东西会把每个词的实体识别出来,比如公司名字就应是属于ORG类的实体。所以我们只要在每个sentence中找到其中的ner_tags 为连续的ORG标记的就可以了。
抽取候选关系
候选实体已经有了,就是文中出现的公司名,我们要找的是公司之间的交易关系。所以这里候选关系简单来说,就是把不同的公司名两两组合,最终得到的关系表其实就相当于对两个候选实体表进行笛卡尔积(当然,我们还需要一些简单的过滤的处理,比如两个公司名不能相同啊等等)了。
A:a1,a2,a3 B:b1,b2
A×B:(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。