精华内容
下载资源
问答
  • 实体抽取主要任务就是给定一段文本,从中抽取出实体类单词,实体类单词如人名、地名、组织名、时间等名词性单词,在具体的代码实现中,我们都是事先定义抽取哪几类实体单词,这个根据具体的训练数据集而定,比如人民...

    实体抽取

    实体抽取主要任务就是给定一段文本,从中抽取出实体类单词,实体类单词如人名、地名、组织名、时间等名词性单词,在具体的代码实现中,我们都是事先定义抽取哪几类实体单词,这个根据具体的训练数据集而定,比如人民日报数据集中,定义了人名、地点名、组织名三类实体,在模型训练完成之后,我们的任务就是对输入的句子进行三类实体单词的抽取,并识别出单词具体属于那一类实体。在这里插入图片描述
    通过上面的介绍,我们会发现这个任务就是一个分类任务,对于中文,在代码实现上,我们是对每个字进行分类。

    只有一个词才属于一个实体类别,一个字怎么分类呢。首先我们要对文本中每个字进行标注,标注法有BIO、BMEO等标注法。BIO标注法中,B代表每个实体类单词的开始字,I代表此实体的其它字部分,O代表非实体字部分,这样每个字就可以进行分类了。

    示例如下:

    我  O
    爱  O
    北  B
    京  I
    天  I
    安  I
    门  I
    。  O
    

    但这样无法区分每个单词具体属于哪个实体,所以通常我们标注时会更加具体一点,如下:

    我  O
    爱  O
    北  B-LOC
    京  I-LOC
    天  I-LOC
    安  I-LOC
    门  I-LOC
    。  O
    

    这样就表明这个词属于地点类实体。

    实现思路

    既然是分类问题,并且是文本数据,我们可能首先会采用RNN网络后接softmax层来进行分类,模型结构如下图所示:
    在这里插入图片描述
    :若文本数据输入不熟悉,可参考句子文本数据如何作为深度学习模型的输入

    此种方法能得到一定准确率,但未考虑一个问题,当某一个字被分为某一类时一定概率上会基于前一个字被分为哪一类,比如类别B-PER后被分为I-LOC类的概率明显很小。

    而CRF(条件随机场)就会具备这个功能。在代码实现上,会有一个转移(transition)矩阵,如下图所示:
    在这里插入图片描述
    START为句子开始标签,END为句子结束标签。

    令此矩阵为trantrantran[i][j]tran[i][j]代表第i个标签之后为第j个标签的概率。此转移矩阵值作为模型参数,首先会被随机初始化,然后进行训练优化。

    有了转移矩阵后,最终标注方法为:首先通过排列组合的方式获取每种标注序列的得分,取最大标注序列得分为最终结果,若句子长度为m,共有n种标注类型,此种做法就要计算nmn^{m}种标注序列得分。在具体实现时,是采用动态规划算法——维特比算法进行计算的。 转移矩阵发挥的作用就是,对每组标注序列得分,除每个标注自身得分外,提供标签转移过程中的转移加分。BiLstm-Crf模型结构如下图:
    在这里插入图片描述
    参考代码: https://github.com/buppt/ChineseNER

    参考文献

    Bidirectional LSTM-CRF Models for Sequence Tagging-2015
    https://www.cnblogs.com/ltolstar/p/11975937.html
    https://zhuanlan.zhihu.com/p/97676647

    展开全文
  • 前言 因为最近项目需要,这里基于资料,个人理解与实际应用进行一个整体性的文本关键信息抽取方法...有监督是对文本中词语进行标注,进而转化成一个二分类问题,对每一个词判别该词语是否是文本的关键词,该方法付..
    • 前言

      因为最近项目需要,这里基于资料,个人理解与实际应用进行一个整体性的文本关键信息抽取方法总结。大的方向上,我将关键信息抽取分为以下几个点:
      关键词提取、主题提取、实体抽取、关系抽取
      下面进行详细的实现分析。

    一、关键词提取

    • 简介

      关键词是文本分析中比较传统也比较重要的一项,在繁冗文本中提取到关键词,有助于之后一系列的操作包括主题、推荐、搜索等等。一般进行关键词提取可以分为有监督或者无监督。有监督是对文本中词语进行标注,进而转化成一个二分类问题,对每一个词判别该词语是否是文本的关键词,该方法付出与收效不成正比,通用性也较差,一般不进行使用。

      无监督算法不需要人工标注的训练集,一般以基于文本统计特征、基于词图模型的TF-IDF、TextRank所使用最多。

    • TF-IDF

      TF-IDF是以词频为衡量指标,重要的词往往在文章中出现的频率也非常高;但另一方面,不是出现次数越多的词就一定重要,因为有些词在各种文章中都频繁出现,那它的重要性肯定不如哪些只在某篇文章中频繁出现的词重要性强。从统计学的角度,就是给予那些不常见的词以较大的权重,而减少常见词的权重。所以逆文档频率IDF被引入。

      TF-IDF的计算公式如下:

    TF(词频) = 单个词在文本中出现的频次/文本的总词数
    IDF(逆文档频率) = log(语料库中的文档总数/(包含该词的文档数 + 1))
    TF-IDF = TF * IDF
    

    一般IDF有已经基于大量语料预设好的值。调用也有大量库打包好可供使用,以调用jieba为例:

    jieba.analyse.extract_tags(sentence, topK=num, withWeight=False, allowPOS=())
    

    可以看到封装得十分完善,可以选择关键词数目已经允许成为关键词的词性。以下源码:

    def extract_tags(self, sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False):
    # (1)中文分词
        if allowPOS:
            allowPOS = frozenset(allowPOS)
            words = self.postokenizer.cut(sentence)
        else:
            words = self.tokenizer.cut(sentence)
    
    # (2)计算词频TF 
        freq = {}
        for w in words:
            if allowPOS:
                if w.flag not in allowPOS:
                    continue
                elif not withFlag:
                    w = w.word
            wc = w.word if allowPOS and withFlag else w
            if len(wc.strip()) < 2 or wc.lower() in self.stop_words:
                continue
            freq[w] = freq.get(w, 0.0) + 1.0
        total = sum(freq.values())
    
    # (3)计算IDF
        for k in freq:
            kw = k.word if allowPOS and withFlag else k
            freq[k] *= self.idf_freq.get(kw, self.median_idf) / total
    
    # (4)排序得到关键词集合
        if withWeight:
            tags = sorted(freq.items(), key=itemgetter(1), reverse=True)
        else:
            tags = sorted(freq, key=freq.__getitem__, reverse=True)
        if topK:
            return tags[:topK]
        else:
            return tags
    
    • TextRank

      TextRank从词图模型的角度寻找文章的关键词,基于Google的PageRank算法,PageRank算法是整个Google搜索的核心算法,通过网页之间的链接计算网页的重要性。

      TextRank在构建图的时候将节点由网页改成了词,网页之间的链接改为词之间的共现关系,实际处理时,取一定长度的窗,在窗内的共现关系则视为有效。

      同样以调用jieba为例

    jieba.analyse.textrank(sentence, topK=num, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
    

    同样可以选择关键词数目以及词性,关键源代码如下:

    def textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False):
    # (1)构建词图
        g = UndirectWeightedGraph()
        words = tuple(self.tokenizer.cut(sentence))
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
    
    # (2)迭代计算所有词的PR值
        nodes_rank = g.rank()
    
    # (3)排序得到关键词集合
        if topK:
            return tags[:topK]
        else:
            return tags
    

    具体的构建词图以及迭代逻辑:

    class UndirectWeightedGraph:
        d = 0.85
    
        def __init__(self):
            self.graph = defaultdict(list)
    
        def addEdge(self, start, end, weight):
            # use a tuple (start, end, weight) instead of a Edge object
            self.graph[start].append((start, end, weight))
            self.graph[end].append((end, start, weight))
    
        def rank(self):
            ws = defaultdict(float)
            outSum = defaultdict(float)
    
            wsdef = 1.0 / (len(self.graph) or 1.0)
            for n, out in self.graph.items():
                ws[n] = wsdef
                outSum[n] = sum((e[2] for e in out), 0.0)
    
            # this line for build stable iteration
            sorted_keys = sorted(self.graph.keys())
            for x in xrange(10):  # 10 iters
                for n in sorted_keys:
                    s = 0
                    for e in self.graph[n]:
                        s += e[2] / outSum[e[1]] * ws[e[1]]
                    ws[n] = (1 - self.d) + self.d * s
    
            (min_rank, max_rank) = (sys.float_info[0], sys.float_info[3])
    
            for w in itervalues(ws):
                if w < min_rank:
                    min_rank = w
                if w > max_rank:
                    max_rank = w
    
            for n, w in ws.items():
                # to unify the weights, don't *100.
                ws[n] = (w - min_rank / 10.0) / (max_rank - min_rank / 10.0)
    
            return ws
    

    二、主题提取

    • 简介

      主题提取与关键词提取比较类似,也是基于了关键词,对一系列文本按需求数量划分主题,不同主题下有对应的关键词。一般使用较多的是LDA主题模型。

    • LDA主题模型

      主题模型的核心思想:一篇文章中的每个词语都是经历以下两个步骤之后生成而来:
      一篇文章以一定概率选择了某个主题,然后并从这个主题中以一定概率选择某个词语。

      alt 属性文本

      LDA同样也有很多封装好的成熟工具,诸如sklearn等都可以方便的调用

    from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
    from sklearn.decomposition import LatentDirichletAllocation
    
    #关键词提取和向量转换过程
    n_features = 1000
    
    tf_vectorizer = CountVectorizer(strip_accents = 'unicode',
                                    max_features=n_features,
                                    stop_words='english',
                                    max_df = 0.5,
                                    min_df = 10)
    tf = tf_vectorizer.fit_transform(df.content_cutted)
    
    #LDA主题模型
    n_topics = 5
    lda = LatentDirichletAllocation(n_topics=n_topics, max_iter=50,
                                    learning_method='online',
                                    learning_offset=50.,
                                    random_state=0)
    
    

    根据给定的文本信息有以下执行效果,会在每类主题下提供排序靠前的关键词

    Topic #0:
    学习 模型 使用 算法 方法 机器 可视化 神经网络 特征 处理 计算 系统 不同 数据库 训练 分类 基于 工具 一种 深度
    Topic #1:
    这个 就是 可能 如果 他们 没有 自己 很多 什么 不是 但是 这样 因为 一些 时候 现在 用户 所以 非常 已经
    Topic #2:
    企业 平台 服务 管理 互联网 公司 行业 数据分析 业务 用户 产品 金融 创新 客户 实现 系统 能力 产业 工作 价值
    Topic #3:
    中国 2016 电子 增长 10 市场 城市 2015 关注 人口 检索 30 或者 其中 阅读 应当 美国 全国 同比 20
    Topic #4:
    人工智能 学习 领域 智能 机器人 机器 人类 公司 深度 研究 未来 识别 已经 医疗 系统 计算机 目前 语音 百度 方面
    

    具体的详细介绍可以移步:LDA主题模型详解

    三、实体抽取

    • 简介

      实体抽取,涉及到的就是经典的NER命名实体识别。一般需求会需要提取人名、地名、组织机构名等等,垂直方向上有医疗名词、金融名词等,这些都可以根据需求和自己的标注数据来完成。

      一般通用性的人名、地名、组织机构名等有封装好的工具可以直接进行调用,如pyltp,hanlp,sklearn等等都可以完成,其模型有用自己的数据进行训练的,也有调用bert之类的与训练模型的。
      如果要使用自己的数据完成特定场景特定实体的识别,就需要进行训练。而进行训练的工具也比较多,可以使用bert,Bi-LSTM + CRF属于比较流行且效果较好的模型。

    • 调用库实现一般的NER

    #pyltp
    
    from pyltp import NamedEntityRecognizer
    
    recognizer = NamedEntityRecognizer()
    recognizer.load("ner.model") #NER模型位置
    netags = recognizer.recognize(words, postags) #对分词、词性标注得到的数据进行实体标识
    
    # hanlp
    
    recognizer_CN = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
    recognizer_EN = hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_UNCASED_EN)
    
    recognizer_CN([list('上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美国纽约现代艺术博物馆参观。'),
                  list('萨哈夫说,伊拉克将同联合国销毁伊拉克大规模杀伤性武器特别委员会继续保持合作。')])
    recognizer_EN(["President", "Obama", "is", "speaking", "at", "the", "White", "House"])
    
    #得到结果
    [[('上海华安工业(集团)公司', 'NT', 0, 12), ('谭旭光', 'NR', 15, 18), ('张晚霞', 'NR', 21, 24), ('美国', 'NS', 26, 28), ('纽约现代艺术博物馆', 'NS', 28, 37)], 
    [('萨哈夫', 'NR', 0, 3), ('伊拉克', 'NS', 5, 8), ('联合国销毁伊拉克大规模杀伤性武器特别委员会', 'NT', 10, 31)]]
    [('Obama', 'PER', 1, 2), ('White House', 'LOC', 6, 8)]
    
    • Bi-LSTM + CRF

      结构示意图
      alt 属性文本
      第一层:表示层

      将每个句子表示为词向量和字向量。

      第二层:BiLSTM层

      输入词向量和字向量到模型中的BiLSTM层,该层的输出是句子的每个词的所有标签的各自得分。

      第三层:CRF层

      该层使用BiLSTM层的输出——每个词的所有标签的各自得分,即(发射概率矩阵)以及转移概率矩阵,作为原始CRF模型的参数,最终获得标签序列的概率。

    LSTM考虑的是输入序列X的上下文信息。CRF还可以考虑tag之间的依赖关系信息

    实例解析可以移步:LSTM+CRF实例解析

    四、关系抽取

    • 简介

      关系抽取任务,一般是基于命名实体识别任务之后,在得到实体之后抽取实体间关系。简单的关系抽取采用规则的方式,通过正则匹配方式,可加入词性或语义角色等进行辅助。
      如小明大学毕业后去了一家国企上班,抽取小明的毕业去向是国企。

      利用深度学习的方法,可以分为传统的有监督学习,以及后面提出的远程监督。有监督采用标注的方式,费时费力。远程监督的假设后因多种问题,远程监督假设,问题被建模为多示例学习问题。

      alt 属性文本

    • PCNN

      多示例学习问题中比较经典的是PCNN的提出,PCNNs模型通过多实例学习范例,使用神经网络模型在远程监督数据中训练关系提取器。模型结构与之前的类似,重要贡献是提出了piecewise max-pooling。作者声称最大池化层大大减小了隐藏层的大小,也不足以捕获句子中实体之间的结构。这可以通过句子的不同段而不是整个句子中的最大池来避免。每个句子根据两个实体可以分为三部分。通过在每个段内执行分段最大池化,我们可以获得更丰富的表示,同时仍然保持与输入句子长度无关的向量。

      alt 属性文本

      此模型中的一个缺点是稍后在未来模型中解决的问题:在损失函数中设置多实例问题的方式。多示例学习假设至少存在一篇文档表示了实体间的关系。该模型在训练和预测时只利用了包中最大概率的文档,这意味着模型忽略了包中大量有用的数据。即使并非包中的所有句子都表达了实体对之间的正确关系,但仅使用单个句子是非常严格的约束。

    • PCNN+ATT

      为了解决PCNN只利用了包中最相关的句子的问题,Lin et al使用了attention,对包中的每个句子计算一个权重。当使用包中所有实例的这种注意加权表示找到损失时,模型能够固有地识别来自噪声的重要句子,并且利用包中的所有信息来进行关系类预测。

    • Bi-GRU + Dual Attention

      之前看过效果比较好的采用双向GRU的开源项目,将其中对每个句子进行encoding的CNN模块换成下示的双向GRU模型。
      在这里插入图片描述

      部分抽取效果

        实体1: 李晓华
        实体2: 王大牛
        李晓华和她的丈夫王大牛前日一起去英国旅行了。
        关系是:
        No.1: 夫妻, Probability is 0.996217
        No.2: 父母, Probability is 0.00193673
        No.3: 兄弟姐妹, Probability is 0.00128172
        
        实体1: 李晓华
        实体2: 王大牛
        李晓华和她的高中同学王大牛两个人前日一起去英国旅行。
        关系是:
        No.1: 好友, Probability is 0.526823
        No.2: 兄弟姐妹, Probability is 0.177491
        No.3: 夫妻, Probability is 0.132977
        
        实体1: 李晓华
        实体2: 王大牛
        王大牛命令李晓华在周末前完成这份代码。
        关系是:
        No.1: 上下级, Probability is 0.965674
        No.2: 亲戚, Probability is 0.0185355
        No.3: 父母, Probability is 0.00953698
        
        实体1: 李晓华
        实体2: 王大牛
        王大牛非常疼爱他的孙女李晓华小朋友。
        关系是:
        No.1: 祖孙, Probability is 0.785542
        No.2: 好友, Probability is 0.0829895
        No.3: 同门, Probability is 0.0728216
      

      源代码地址:BI-GRU_2ATT
      更细节关系抽取方法归纳可移步:NLP关系抽取方法归纳

    展开全文
  • 中医临床病历是中医重要的科研数据资源,但目前临床病历仍以文本为主要表达形式,病历数据深入分析的前提是进行结构化信息抽取,而命名实体抽取是其基础性步骤。针对中医临床病历的命名实体,如症状、疾病和诱因等的...
  • 通过在特定领域文本中大量出现名词、名词短语的频率统计操作,其中的实体属性信息进行识别和抽取。这类方法通常首先利用POS标注器在句子中识别名词(名词短语),然后用数据挖掘算法记录它们出现的频率,进而通过...

    一、

    基于频率的属性抽取虽然是比较传统的方法,但有的时候是真的很好用。

    通过在特定领域文本中大量出现名词、名词短语的频率统计操作,对其中的实体属性信息进行识别和抽取。这类方法通常首先利用POS标注器在句子中识别名词(名词短语),然后用数据挖掘算法记录它们出现的频率,进而通过实验确定阈值,保留大于阈值的名词(名词短语)。

    在上述的基础上,可以根据业务场景做优化。例如:

    移除那些明显不是实体属性的名词可以显著提升算法精度。在某些文本数据中,会出现某种特定的关系,比如部分-整体这种的包含关系。语料会出现类似这样的短语模板,“1号机组有热控系统”、“1号机组的热控系统...”、“xxx有xxx”、“xxx的xxx”、“xxx包含xxx”等等。利用这些短语模板可以发现机组的组成部分。通过计算候选短语和那些与其具有部分-整体关系的实体类的互信息(PMI)得分。这一想法的基本出发点就是:那些与表示某类产品部分-整体关系的短语经常一起出现的名词或名词短语很有可能就是正确的属性词。

            PMI(a, b) = hits(a ^ b) / (hits(a)hits(b))

    其中a是利用上述频率方法识别出的候选属性词,b是指示词,搜索引擎可以用来计算词出现和共现的频率信息。当PMI值过小时,说明a和b不会频繁共现,这时可能不是产品的组成部分。

     

    二、

    可以通过频率和信息距离来抽取属性。此方法首先通过统计频率发现关键属性词,然后利用信息距离(比如:编辑距离、bm25、余弦距离等)找到与该属性相关的其他词。

     

    三、

    采用cvalue方法。cvalue方法也是基于频率,但是它考虑的是多词文本表达t的频率、t的长度、含t的其他表达。当利用cvalue找到候选属性集后,在给定的种子属性的基础上利用bootstrap操作对候选集合进行过滤,其主要思想是每个候选属性词与种子应该是经常共现的。

     

    展开全文
  • 知识抽取涉及的“知识”通常是清楚的、事实性的信息,这些信息来自不同的来源和结构,而不同数据源进行的知识抽取的方法各有不同,从结构化数据中获取知识用 D2R,...实体抽取 也就是命名实体识别,包括实体的检测.

    知识抽取涉及的“知识”通常是 清楚的、事实性的信息,这些信息来自不同的来源和结构,而对不同数据源进行的知识抽取的方法各有不同,从结构化数据中获取知识用 D2R,其难点在于复杂表数据的处理,包括嵌套表、多列、外键关联等;从链接数据中获取知识用图映射,难点在于数据对齐;从半结构化数据中获取知识用包装器,难点在于 wrapper 的自动生成、更新和维护,这一篇主要讲从文本中获取知识,也就是我们广义上说的信息抽取

    1. 信息抽取三个最重要/最受关注的子任务

    • 实体抽取
      也就是命名实体识别,包括实体的检测(find)和分类(classify)
    • 关系抽取
      通常我们说的三元组(triple) 抽取,一个谓词(predicate)带 2 个形参(argument),如 Founding-location(IBM,New York)
    • 事件抽取
      相当于一种多元关系的抽取

    篇幅限制,这一篇主要整理实体抽取和关系抽取,下一篇再上事件抽取。

    2. 相关竞赛与数据集

    信息抽取相关的会议/数据集有 MUC、ACE、KBP、SemEval 等。其中,ACE (Automated Content Extraction) 对 MUC 定义的任务进行了融合、分类和细化,KBP (Knowledge Base Population) 对 ACE 定义的任务进一步修订,分了四个独立任务和一个整合任务,包括

    • Cold Start KB (CSKB)
      端到端的冷启动知识构建
    • Entity Discovery and Linking (EDL)
      实体发现与链接
    • Slot Filling (SF)
      槽填充
    • Event
      事件抽取
    • Belief/Sentiment (BeSt)
      信念和情感

    至于 SemEval 主要是词义消歧评测,目的是增加人们对词义、多义现象的理解。

    ACE 的 17 类关系


    具体的应用实例

    常用的 Freebase relations

    people/person/nationality,
    people/person/profession,
    biology/organism_higher_classification,
    location/location/contains
    people/person/place-of-birth
    film/film/genre

    还有的一些世界范围内知名的高质量大规模开放知识图谱,如包括 DBpedia、Yago、Wikidata、BabelNet、ConceptNet 以及 Microsoft Concept Graph等,中文的有开放知识图谱平台 OpenKG……

    3. 实体抽取

    实体抽取或者说命名实体识别(NER)在信息抽取中扮演着重要角色,主要抽取的是文本中的原子信息元素,如人名、组织/机构名、地理位置、事件/日期、字符值、金额值等。实体抽取任务有两个关键词:find & classify,找到命名实体,并进行分类

    主要应用:

    • 命名实体作为索引和超链接
    • 情感分析的准备步骤,在情感分析的文本中需要识别公司和产品,才能进一步为情感词归类
    • 关系抽取(Relation Extraction)的准备步骤
    • QA 系统,大多数答案都是命名实体

    3.1 传统机器学习方法

    3.1.1 标准流程:

    Training:

    1. 收集代表性的训练文档
    2. 为每个 token 标记命名实体(不属于任何实体就标 Others O)
    3. 设计适合该文本和类别的特征提取方法
    4. 训练一个 sequence classifier 来预测数据的 label

    Testing:

    1. 收集测试文档
    2. 运行 sequence classifier 给每个 token 做标记
    3. 输出命名实体

    3.1.2 编码方式

    看一下最常用的两种 sequence labeling 的编码方式,IO encoding 简单的为每个 token 标注,如果不是 NE 就标为 O(other),所以一共需要 C+1 个类别(label)。而 IOB encoding 需要 2C+1 个类别(label),因为它标了 NE boundary,B 代表 begining,NE 开始的位置,I 代表 continue,承接上一个 NE。如果连续出现两个 B,自然就表示上一个 B 已经结束了。

    在 Stanford NER 里,用的其实是 IO encoding,有两个原因,一是 IO encoding 运行速度更快,二是在实践中,两种编码方式的效果差不多。IO encoding 确定 boundary 的依据是,如果有连续的 token 类别不为 O,那么类别相同,同属一个 NE;类别不相同,就分割,相同的 sequence 属同一个 NE。而实际上,两个 NE 是相同类别这样的现象出现的很少,如上面的例子,Sue,Mengqiu Huang 两个同是 PER 类别,并不多见,更重要的是,在实践中,虽然 IOB encoding 能规定 boundary,而实际上它也很少能做对,它也会把 Sue Mengqiu Huang 分为同一个 PER,这主要是因为更多的类别会带来数据的稀疏。

    3.1.3 特征选择

    Features for sequence labeling:

    • Words
        Current word (essentially like a learned dictionary)
        Previous/next word (context)
    • Other kinds of inferred linguistic classification
        Part of speech tags
        Dependency relations
    • Label context
        Previous (and perhaps next) label

    再来看两个比较重要的 features:

    (1) Word substrings
    Word substrings (包括前后缀)的作用是很大的,以下面的例子为例,NE 中间有 ‘oxa’ 的十有八九是 drug,NE 中间有 ‘:’ 的则大多都是 movie,而以 field 结尾的 NE 往往是 place。

    (2) Word shapes
    可以做一个 mapping,把 单词长度(length)、大写(capitalization)、数字(numerals)、希腊字母(Greek eltters)、单词内部标点(internal punctuation) 这些字本身的特征都考虑进去。
    如下表,把所有大写字母映射为 X,小写字母映射为 x,数字映射为 d…

    3.1.4 序列模型

    NLP 的很多数据都是序列类型,像 sequence of characters, words, phrases, lines, sentences,我们可以把这些任务当做是给每一个 item 打标签,如下图:

    常见的序列模型有 有向图模型 如 HMM,假设特征之间相互独立,找到使得 P(X,Y) 最大的参数,生成式模型;无向图模型 如 CRF,没有特征独立的假设,找到使得 P(Y|X) 最大的参数,判别式模型。相对而言,HMM 优化的是联合概率(整个序列,实际就是最终目标),而不是每个时刻最优点的拼接,一般而言性能比 CRF 要好,在小数据上拟合也会更好。

    (1) 整个流程如图所示(构造模型的过程):

    (2) 讨论下最后的 inference

     

    最基础的是 “decide one sequence at a time and move on”,也就是一个 greedy inference,比如在词性标注中,可能模型在位置 2 的时候挑了当前最好的 PoS tag,但是到了位置 4 的时候,其实发现位置 2 应该有更好的选择,然而,greedy inference 并不会 care 这些。因为它是贪婪的,只要当前最好就行了。除了 greedy inference,比较常见的还有 beam inference 和 viterbi inference。

    a. Greedy Inference

    优点:

    1. 速度快,没有额外的内存要求
    2. 非常易于实现
    3. 有很丰富的特征,表现不错

    缺点:

    1. 贪婪

    b. Beam Inference

    • 在每一个位置,都保留 top k 种可能(当前的完整序列)
    • 在每个状态下,考虑上一步保存的序列来进行推进

    优点:

    1. 速度快,没有额外的内存要求
    2. 易于实现(不用动态规划)

    缺点:

    1. 不精确,不能保证找到全局最优

    c. Viterbi Inference

    • 动态规划
    • 需要维护一个 fix small window

    优点:

    1. 非常精确,能保证找到全局最优序列

    缺点:

    1. 难以实现远距离的 state-state interaction

    3.2 深度学习方法

    LSTM+CRF

    最经典的 LSTM+CRF,端到端的判别式模型,LSTM 利用过去的输入特征,CRF 利用句子级的标注信息,可以有效地使用过去和未来的标注来预测当前的标注。

     

    3.3 评价指标

    评估 IR 系统或者文本分类的任务,我们通常会用到 precision,recall,F1 这种 set-based metrics,见信息检索评价的 Unranked Boolean Retrieval Model 部分,但是在这里对 NER 这种 sequence 类型任务的评估,如果用这些 metrics,可能出现 boundary error 之类的问题。因为 NER 的评估是按每个 entity 而不是每个 token 来计算的,我们需要看 entity 的 boundary。

    以下面一句话为例

    First Bank of Chicago announced earnings...

    正确的 NE 应该是 First Bank of Chicago,类别是 ORG,然而系统识别了 Bank of Chicago,类别 ORG,也就是说,右边界(right boundary)是对的,但是左边界(left boundary)是错误的,这其实是一个常见的错误。

    正确的标注:
    ORG - (1,4)
    
    系统:
    ORG - (2,4)

    而计算 precision,recall 的时候,我们会发现,对 ORG - (1,4) 而言,系统产生了一个 false negative,对 ORG - (2,4) 而言,系统产生了一个 false positive!所以系统有了 2 个错误。F1 measure 对 precision,recall 进行加权平均,结果会更好一些,所以经常用来作为 NER 任务的评估手段。另外,专家提出了别的建议,比如说给出 partial credit,如 MUC scorer metric,然而,对哪种 case 给多少的 credit,也需要精心设计。

    4 实体链接

    实体识别完成之后还需要进行归一化,比如万达集团、大连万达集团、万达集团有限公司这些实体其实是可以融合的。

    主要步骤如下:

    1. 实体识别
      命名实体识别,词典匹配
    2. 候选实体生成
      表层名字扩展,搜索引擎,查询实体引用表
    3. 候选实体消歧
      图方法,概率生成模型,主题模型,深度学习

    补充一些开源系统:

    5. 关系抽取

    关系抽取 需要从文本中抽取两个或多个实体之间的语义关系,主要方法有下面几类:

    • 基于模板的方法(hand-written patterns)
      • 基于触发词/字符串
      • 基于依存句法
    • 监督学习(supervised machine learning)
      • 机器学习
      • 深度学习(Pipeline vs Joint Model)
    • 半监督/无监督学习(semi-supervised and unsupervised)
      • Bootstrapping
      • Distant supervision
      • Unsupervised learning from the web

    5.1 基于模板的方法

    5.1.1 基于触发词/字符串

    首先是基于字符串的 pattern,举一个 IS-A 的关系

    Agar is a substance prepared from a mixture of red algae, **such as** Gelidium, for laboratory or industrial use

    通过 such as 可以判断这是一种 IS-A 的关系,由此可以写的规则是:

    “Y such as X ((, X)* (, and|or) X)”
    “such Y as X”
    “X or other Y”
    “X and other Y”
    “Y including X”
    “Y, especially X”

    另一个直觉是,更多的关系是在特定实体之间的,所以可以用 NER 标签来帮助关系抽取,如

    •  located-in (ORGANIZATION, LOCATION)
    •  founded (PERSON, ORGANIZATION)
    •  cures (DRUG, DISEASE)

    也就是说我们可以把基于字符串的 pattern 和基于 NER 的 pattern 结合起来,就有了下面的例子。

    对应的工具有 Stanford CoreNLPtokensRegex

    5.1.2 基于依存句法

    通常可以以动词为起点构建规则,对节点上的词性和边上的依存关系进行限定。流程为:

    小结

    手写规则的 优点 是:

    • 人工规则有高准确率(high-precision)
    • 可以为特定领域定制(tailor)
    • 在小规模数据集上容易实现,构建简单

    缺点

    • 低召回率(low-recall)
    • 特定领域的模板需要专家构建,要考虑周全所有可能的 pattern 很难,也很费时间精力
    • 需要为每条关系来定义 pattern
    • 难以维护
    • 可移植性差

    5.2 监督学习-机器学习

    5.2.1 研究综述

    漆桂林,高桓,吴天星.知识图谱研究进展[J].情报工程,2017,3(1):004-025

    Zhou[13] 在 Kambhatla 的基础上加入了基本词组块信息和 WordNet,使用 SVM 作为分类器,在实体关系识别的准确率达到了 55.5%,实验表明实体类别信息的特征有助于提高关系抽取性能; Zelenko[14] 等人使用浅层句法分析树上最小公共子树来表达关系实例,计算两颗子树之间的核函数,通过训练例如 SVM 模型的分类器来对实例进行分。但基于核函数的方法的问题是召回率普遍较低,这是由于相似度计算过程匹配约束比较严格,因此在后续研究对基于核函数改进中,大部分是围绕改进召回率。但随着时间的推移,语料的增多、深度学习在图像和语音领域获得成功,信息抽取逐渐转向了基于神经模型的研究,相关的语料被提出作为测试标准,如 SemEval-2010 task 8[15]。基于神经网络方法的研究有,Hashimoto[16] 等人利用 Word Embedding 方法从标注语料中学习特定的名词对的上下文特征,然后将该特征加入到神经网络分类器中,在 SemEval-2010 task 8 上取得了 F1 值 82.8% 的效果。基于神经网络模型显著的特点是不需要加入太多的特征,一般可用的特征有词向量、位置等,因此有人提出利用基于联合抽取模型,这种模型可以同时抽取实体和其之间的关系。联合抽取模型的优点是可以避免流水线模型存在的错误累积[17-22]。其中比较有代表性的工作是[20],该方法通过提出全新的全局特征作为算法的软约束,进而同时提高关系抽取和实体抽取的准确率,该方法在 ACE 语料上比传统的流水线方法 F1 提高了 1.5%,;另一项工作是 [22],利用双层的 LSTM-RNN 模型训练分类模型,第一层 LSTM 输入的是词向量、位置特征和词性来识别实体的类型。训练得到的 LSTM 中隐藏层的分布式表达和实体的分类标签信息作为第二层 RNN 模型的输入,第二层的输入实体之间的依存路径,第二层训练对关系的分类,通过神经网络同时优化 LSTM 和 RNN 的模型参数,实验与另一个采用神经网络的联合抽取模型[21]相比在关系分类上有一定的提升。但无论是流水线方法还是联合抽取方法都属于有监督学习,因此需要大量的训练语料,尤其是对基于神经网络的方法,需要大量的语料进行模型训练,因此这些方法都不适用于构建大规模的 Knowledge Base。

    [13] Guodong Z, Jian S, Jie Z, et al. ExploringVarious Knowledge in relation Extraction.[c]// acl2005, Meeting of the Association for ComputationalLinguistics, Proceedings of the Conference, 25-30 June, 2005, University of Michigan, USA. DBLP.2005:419-444.
    [14] Zelenko D, Aone C, Richardella A. KernelMethods for relation Extraction[J]. the Journal ofMachine Learning Research, 2003, 1083-1106.
    [15] Hendrickx I, Kim S N, Kozareva Z, et al.semEval-2010 task 8: Multi-way classification ofsemantic relations between Pairs of nominals[c]//the Workshop on semantic Evaluations: recentachievements and Future Directions. association forComputational Linguistics, 2009:94-99.
    [16] Hashimoto K, Stenetorp P, Miwa M, et al. Task-oriented learning of Word Embeddings for semanticRelation Classification[J], Computer Science,2015:268-278.
    [17] Singh S, Riedel S, Martin B, et al. JointInference of Entities, Relations, and Coreference[C]//the Workshop on automated Knowledge baseConstruction ,San Francisco, CA, USA, October27-november 1. 2013:1-6.
    [18] Miwa M, Sasaki Y. Modeling Joint Entity andrelation Extraction with table representation[c]//conference on Empirical Methods in naturalLanguage Processing. 2014:944-948.
    [19] Lu W, Dan R. Joint Mention Extraction andclassification with Mention Hypergraphs[c]//conference on Empirical Methods in naturallanguage Processing. 2015:857-867.
    [20] Li Q, Ji H. Incremental Joint Extraction of EntityMentions and relations[c]// annual Meeting of theAssociation for Computational Linguistics. 2014:402-412.
    [21] Kate R J, Mooney R J. Joint Entity andrelation Extraction using card-pyramid Parsing[c]//conference on computational natural languagelearning. 2010:203-212.
    [22] Miwa M, Bansal M. End-to-End Relation Extraction using lstMs on sequences and tree structures[c]// annual Meeting of the association for computational linguistics. 2016:1105-1116.

    5.2.2 分类器

    标准流程:

    - 预先定义好想提取的关系集合
    - 选择相关的命名实体集合
    - 寻找并标注数据
     选择有代表性的语料库
     标记命名实体
     人工标注实体间的关系
     分成训练、开发、测试集
    - 设计特征
    - 选择并训练分类器
    - 评估结果

    为了提高 efficiency,通常我们会训练两个分类器,第一个分类器是 yes/no 的二分类,判断命名实体间是否有关系,如果有关系,再送到第二个分类器,给实体分配关系类别。这样做的好处是通过排除大多数的实体对来加快分类器的训练过程,另一方面,对每个任务可以使用 task-specific feature-set。

    可以采用的分类器可以是 MaxEnt、Naive Bayes、SVM 等。

    5.2.3 特征

    直接上例子:
    E.g., American Airlines, a unit of AMR, immediately matched the move, spokesman Tim Wagner said

    Mention 1: American Airlines
    Mention 2: Tim Wagner

    用到的特征可以有:
    Word features

    • Headwords of M1 and M2, and combination
      • M1: Airlines, M2: Wagner, Combination: Airlines-Wagner
    • Bag of words and bigrams in M1 and M2
      • {American, Airlines, Tim, Wagner, American Airlines, Tim Wagner}
    • Words or bigrams in particular positions left and right of M1/M2
      • M2: -1 spokesman
      • M2: +1 said
    • Bag of words or bigrams between the two entities
      • {a, AMR, of, immediately, matched, move, spokesman, the, unit}

    Named Entities Type and Mention Level Features

    • Named-entities types
      M1: ORG
      M2: PERSON
    • Concatenation of the two named-entities types
      ORG-PERSON
    • Entity Level of M1 and M2 (NAME, NOMINAL, PRONOUN)
      M1: NAME [it or he would be PRONOUN]
      M2: NAME [the company would be NOMINAL]

    Parse Features

    • Base syntactic chunk sequence from one to the other
      NP NP PP VP NP NP
    • Constituent path through the tree from one to the other
      NP ↑ NP ↑ S ↑ S ↓ NP
    • Dependency path
      Airlines matched Wagner said

    Gazetteer and trigger word features

    • Trigger list for family: kinship terms
      parent, wife, husband, grandparent, etc. [from WordNet]
    • Gazetteer:
      List of useful geo or geopolitical words
      Country name list
      Other sub-entities

     

    或者从另一个角度考虑,可以分为

    • 轻量级
      实体的特征,包括实体前后的词,实体类型,实体之间的距离等
    • 中等量级
      考虑 chunk,如 NP,VP,PP 这类短语
    • 重量级
      考虑实体间的依存关系,实体间树结构的距离,及其他特定的结构信息

     

    5.3 监督学习-深度学习

    深度学习方法又分为两大类,pipeline 和 joint model

    • Pipeline
      把实体识别和关系分类作为两个完全独立的过程,不会相互影响,关系的识别依赖于实体识别的效果
    • Joint Model
      实体识别和关系分类的过程共同优化。

    深度学习用到的特征通常有:

    • Position embeddings
    • Word embeddings
    • Knowledge embeddings

    模型通常有 CNN/RNN + attention,损失函数 ranking loss 要优于交叉熵。

    5.3.1 Pipeline

    (1) CR-CNN

    Santos et. al Computer Science 2015


    输入层 word embedding + position embedding,用 6 个卷积核 + max pooling 生成句子向量表示,与关系(类别)向量做点积求相似度,作为关系分类的结果。
    损失函数用的是 pairwise ranking loss function

    训练时每个样本有两个标签,正确标签 y+ 和错误标签 c-,m+ 和 m- 对应了两个 margin,\gamma用来缩放,希望s(x)_{y+}越大越好,s(x)_{c-}越小越好。

    另外还有一些 tips:

    • 负样本选择s(x)_{c}  最大的标签,便于更好地将比较类似的两种 label 分开
    • 加了一个 Artifical Class,表示两个实体没有任何关系,可以理解为 Other/拒识,训练时不考虑这一类,损失函数的第一项直接置 0,预测时如果其他 actual classes 的分数都为负,那么就分为 Other,对于整体的 performance 有提升
    • position feature 是每个 word 与两个 entity 的相对距离,强调了两个实体的作用,认为距离实体近的单词更重要,PE 对效果的提升明显,但实际上只用两个实体间的 word embedding 作为输入代替整个句子的 word embedding+position embedding,也有相近效果,且输入更少实现更简单。

     

    (2) Attention-CNN

    Relation Classification via Multi-Level Attention CNNs


    用了两个层面的 Attention,一个是输入层对两个 entity 的注意力,另一个是在卷积后的 pooling 阶段,用 attention pooling 代替 max pooling 来加强相关性强的词的权重。

    输入特征还是 word embedding 和 position embedding,另外做了 n-gram 的操作,取每个词前后 k/2 个词作为上下文信息,每个词的 embedding size 就是(d_w+2d_p)*k。这个滑动窗口的效果其实和卷积一样,但因为输入层后直接接了 attention,所以这里先做了 n-gram。

    第一层 input attention 用两个对角矩阵分别对应两个 entity,对角线各元素是输入位置对应词与实体间的相关性分数A^j_{i,i}=f(e_j,w_i),通过词向量內积衡量相关性,然后 softmax 归一化,每个词对两个实体各有一个权重\alpha_1,\alpha_2,然后进行加权把权重与输入z_i 融合,有三种融合方法, 求平均、拼接、相减(类似 transE 操作,把 relation 看做两个权重的差)。这一层的 attention 捕捉的是句中单词与实体的词向量距离,但其实有些线索词如 caused 与实体的相似度不高但很重要。

    接着做正常卷积,然后第二层用 attention pooling 代替 max-pooling,bilinear 方法计算相关度,然后归一化,再做 max pooling 得到模型最后的输出w^o

    另外,这篇 paper 还改进了 Santos 提出的 Ranking loss,Ranking loss 里的 distance function 直接用了网络的输出,而这里定义了新的 distance function 来衡量模型输出w^o 和正确标签对应的向量 relation embedding W^L_y 的距离:

    用了 L2 正则,然后基于这一距离定义了目标函数:

    两个距离分别为网络输出与正例和与负例的距离,负例照例用了所有错误类别中与输出最接近的,margin 设置的 1。

    这应该是目前最好的方法,SemEval-2010 Task 8 上的 F1 值到了 88。

    (3) Attention-BLSTM 模型

    Peng Zhou et. al ACL 2016

    CNN 可以处理文本较短的输入,但是长距离的依赖还是需要 LSTM,这一篇就是中规中矩的 BiLSTM+Attn 来做关系分类任务。

     

    (4) 评测

    各方法在 SemEval-2010 Task 8 上的评测:

    5.3.2 Joint Model

    Pipeline 的方法会导致误差的传递,端到端的方法直觉上会更优。

    (1) LSTM-RNNs

    Miwa et. al ACL 2016

    用端到端的方式进行抽取,实体识别和关系分类的参数共享,不过判断过程并没有进行交互。

    三个表示层

    • Embedding layer (word embeddings layer)

    用到了词向量v_w、词性 POS tags  v_p、依存句法标签 Dependency types v_{d}、实体标签 entity labels v_e

    • Sequence layer (word sequence based LSTM-RNN layer)
      负责实体识别
      BiLSTM 对句子进行编码,输入是 word embedding 和 POS embedding 的拼接,输出是两个方向的隐层单元输出的拼接s_t
      然后进行实体识别,还是序列标注任务,两层 NN 加一个 softmax 输出标签。打标签的方法用 BILOU(Begin, Inside, Last, Outside, Unit),解码时考虑到当前标签依赖于上一个标签的问题,输入在 sequence layer 层的输出上还加了上一时刻的 label embedding,用 schedule sampling 的方式来决定用 gold label 还是 predict label

    • Dependency layer (dependency subtree based LSTM-RNN layer )
      负责关系分类
      用 tree-structured BiLSTM-RNNs 来表示 relation candidate,捕捉了 top-down 和 bottom-up 双向的关系,输入是 sequence layer 的输出s_t,dependency type embedding v_d,以及 label embedding v_e,输出是d_p
      关系分类主要还是利用了依存树中两个实体之间的最短路径(shortest path)。主要过程是找到 sequence layer 识别出的所有实体,对每个实体的最后一个单词进行排列组合,再经过 dependency layer 得到每个组合的d_p,然后同样用两层 NN + softmax 对该组合进行分类,输出这对实体的关系类别。
      d_p 第一项是 bottom-up LSTM-RNN 的 top LSTM unit,代表实体对的最低公共父节点(the lowest common ancestor of the target word pair p),第二、三项分别是两个实体对应的 top-down LSTM-RNN 的 hidden state。

    不同模型在 SemEval-2010 Task 8 数据集上的效果比较:

    与我们的直觉相反,joint model 不一定能起正作用。不过上面的比较能得到的另一个结论是:外部资源可以来优化模型

    5.3 监督学习-评价指标

    最常用的 Precision, Recall, F1

     

    5.4 监督学习-小结

    如果测试集和训练集很相似,那么监督学习的准确率会很高,然而,它对不同 genre 的泛化能力有限,模型比较脆弱,也很难扩展新的关系;另一方面,获取这么大的训练集代价也是昂贵的。

    6. 半监督学习

    6.1 研究综述

    漆桂林,高桓,吴天星.知识图谱研究进展[J].情报工程,2017,3(1):004-025

    Brin[23]等人通过少量的实例学习种子模板,从网络上大量非结构化文本中抽取新的实例,同时学习新的抽取模板,其主要贡献是构建了 DIPRE 系统;Agichtein[24]在 Brin 的基础上对新抽取的实例进行可信度的评分和完善关系描述的模式,设计实现了 Snowball 抽取系统;此后的一些系统都沿着 Bootstrap 的方法,但会加入更合理的对 pattern 描述、更加合理的限制条件和评分策略,或者基于先前系统抽取结果上构建大规模 pattern;如 NELL(Never-EndingLanguage Learner)系统[25-26],NELL 初始化一个本体和种子 pattern,从大规模的 Web 文本中学习,通过对学习到的内容进行打分来提高准确率,目前已经获得了 280 万个事实。

    [23] brin s. Extracting Patterns and relations fromthe World Wide Web[J]. lecture notes in computerScience, 1998, 1590:172-183.
    [24] Agichtein E, Gravano L. Snowball : Extractingrelations from large Plain-text collections[c]// acMConference on Digital Libraries. ACM, 2000:85-94.
    [25] Carlson A, Betteridge J, Kisiel B, et al. Toward anarchitecture for never-Ending language learning.[c]// twenty-Fourth aaai conference on artificialIntelligence, AAAI 2010, Atlanta, Georgia, Usa, July.DBLP, 2010:529-573.
    [26] Mitchell T, Fredkin E. Never-ending Languagelearning[M]// never-Ending language learning.Alphascript Publishing, 2014.

    6.2 Seed-based or bootstrapping approaches

    半监督学习主要是利用少量的标注信息进行学习,这方面的工作主要是基于 Bootstrap 的方法以及远程监督方法(distance supervision)基于 Bootstrap 的方法 主要是利用少量实例作为初始种子(seed tuples)的集合,然后利用 pattern 学习方法进行学习,通过不断迭代从非结构化数据中抽取实例,然后从新学到的实例中学习新的 pattern 并扩充 pattern 集合,寻找和发现新的潜在关系三元组。远程监督 方法主要是对知识库与非结构化文本对齐来自动构建大量训练数据,减少模型对人工标注数据的依赖,增强模型跨领域适应能力

    6.2.1 Relation Bootstrapping

    •  Gather a set of seed pairs that have relation R
    •  Iterate:
    1.  Find sentences with these pairs
    2.  Look at the context between or around the pair and generalize the context to create patterns
    3.  Use the patterns for grep for more pairs

    看一个完整的例子


    从 5 对种子开始,找到包含种子的实例,替换关键词,形成 pattern,迭代匹配,就为(author, book) 抽取到了 relation pattern,x, by y, 和 x, one of y’s

    优点:

    • 构建成本低,适合大规模构建
    • 可以发现新的关系(隐含的)

    缺点:

    • 对初始给定的种子集敏感
    • 存在语义漂移问题
    • 结果准确率较低
    • 缺乏对每一个结果的置信度的计算

    6.2.2 Snowball

    对 Dipre 算法的改进。Snowball 也是一种相似的迭代算法,Dipre 的 X,Y 可以是任何字符串,而 Snowball 要求 X,Y 必须是命名实体,并且 Snowball 对每个 pattern 计算了 confidence value

    Group instances w/similar prefix, middle, suffix, extract patterns
     •  But require that X and Y be named entites
     •  And compute a confidence for each pattern
    
    ORGANIZATION {'s, in, headquaters} LOCATION
    LOCATION {in, based} ORGANIZATION

    6.3 Distant Supervision

    基本假设:两个实体如果在知识库中存在某种关系,则包含该两个实体的非结构化句子均能表示出这种关系。

    具体步骤:

    1. 从知识库中抽取存在关系的实体对
    2. 从非结构化文本中抽取含有实体对的句子作为训练样例,然后提取特征训练分类器。


    Distant Supervision 结合了 bootstrapping 和监督学习的长处,使用一个大的 corpus 来得到海量的 seed example,然后从这些 example 中创建特征,最后与有监督的分类器相结合。

    与监督学习相似的是这种方法用大量特征训练了分类器,通过已有的知识进行监督,不需要用迭代的方法来扩充 pattern。
    与无监督学习相似的是这种方法采用了大量没有标注的数据,对训练语料库中的 genre 并不敏感,适合泛化。

    6.3.1 PCNN + Attention

    Kang Liu et.al AI 2017

    1. PCNN
      单一池化难以刻画不同上下文对句向量的贡献,而进行分段池化,根据两个实体把句子分成三段然后对不同部分分别进行池化,刻画更为精准。
      另见 Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks
    2. Sentence-level attention
      远程监督常用的 multi-instance learning,只选取最有可能的一个句子进行训练预测,丢失了大部分信息,句子层面的 attention 对 bag 里所有句子进行加权作为 bag 的特征向量,保留尽可能多的信息,能动态减少噪声句的权重,有利于解决错误标记的问题。
      另见 Neural Relation Extraction with Selective Attention over Instances
      这里对两个实体向量作差来表示 relation 向量v_{relation},如果一个实例能表达这种关系,那么这个实例的向量表达应该和 v_{relation}高度相似,根据这个假设来计算句向量和关系向量的相关性,其中[b_i,v_{relation}] 表示垂直级联,b_i 是 PCNN 得到的特征输出,softmax 归一化再进行加权,最后再过softmax 进行分类。

    3. Entity representation
    引入了实体的背景知识(Freebase 和 Wikipedia 提供的实体描述信息),增强了实体表达(entity representation),D 是 (entity, description) 的集合表示,e_i 是实体表示,d_i 通过另一个传统 CNN 对收集到的实体的描述句抽特征得到

    希望e_i 和d_i 尽可能相似,定义两者间的误差:

    最后的损失函数是交叉熵和实体描述误差的加权和:

    6.4 小结

    优点:

    • 可以利用丰富的知识库信息,减少一定的人工标注

    缺点:

    • 假设过于肯定,引入大量噪声,存在语义漂移现象
    • 很难发现新的关系

    7. 无监督学习

    7.1 研究综述

    Bollegala[27]从搜索引擎摘要中获取和聚合抽取模板,将模板聚类后发现由实体对代表的隐含语义关系; Bollegala[28]使用联合聚类(Co-clustering)算法,利用关系实例和关系模板的对偶性,提高了关系模板聚类效果,同时使用 L1 正则化 Logistics 回归模型,在关系模板聚类结果中筛选出代表性的抽取模板,使得关系抽取在准确率和召回率上都有所提高。
    无监督学习一般利用语料中存在的大量冗余信息做聚类,在聚类结果的基础上给定关系,但由于聚类方法本身就存在难以描述关系和低频实例召回率低的问题,因此无监督学习一般难以得很好的抽取效果。

    [27] Bollegala D T, Matsuo Y, Ishizuka M. Measuringthe similarity between implicit semantic relationsfrom the Web[J]. Www Madrid! track semantic/dataWeb, 2009:651-660.
    [28] Bollegala D T, Matsuo Y, Ishizuka M. RelationalDuality: Unsupervised Extraction of semantic relations between Entities on the Web[c]//International Conference on World Wide Web, WWW 2010, Raleigh, North Carolina, Usa, April. DBLP, 2010:151-160.

    7.2 Open IE

    Open Information Extraction 从网络中抽取关系,没有训练数据,没有关系列表。过程如下:

    1. Use parsed data to train a “trustworthy tuple” classifier
    2. Single-pass extract all relations between NPs, keep if trustworthy
    3. Assessor ranks relations based on text redundancy
    
    E.g.,
    (FCI, specializes in, sobware development)
    (Tesla, invented, coil transformer)

    8. 半监督/无监督学习-评价指标

    因为抽取的是新的关系,并不能准确的计算 precision 和 recall,所以我们只能估计,从结果集中随机抽取一个关系的 sample,然后人工来检验准确率

    也可以计算不同 recall level 上的 precision,比如说分别计算在前 1000,10,000,100,000 个新的关系中的 precision,在各个情况下随机取样。

    然而,并没有方法来计算 recall。

    展开全文
  • 实体关系抽取作为信息抽取、自然语言理解、信息检索等领域的核心任务和重要环节,能够从文本抽取实体对间的语义关系.近年来,深度学习在联合学习、远程监督等方面上的应用,使关系抽取任务取得了较为丰富的研究成果....
  • 实体关系抽取任务方法及SOTA模型总结

    千次阅读 多人点赞 2020-05-31 21:02:08
    1 实体关系抽取方法思路 实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。该任务的输入是一句话,输出是一个spo三元组(subject-...在管道模型之后,可以同时进行实体识别和关系分类的联合模型
  • 在回顾文本信息抽取研究历史基础上,重点介绍开放式实体抽取、实体消岐和关系抽取的任务、难点、方法、评测、技术水平,对文本信息抽取的发展方向以及在网络知识工程、问答系统中的应用进行分析讨论。 但从全文中来...
  • 它可以自动从生物医学文本中挖掘实 体间的相互关系 目前,生物医学实体关系抽取方法一般只针对某一特定任务(如药物关系,蛋白质交互关系抽取 等)训练单任务模型进行抽取,忽略了多个任务之间的相关性 因此,该文使用基于...
  • 针对传统实体关系抽取需要预先指定关系类型和制定抽取规则等无法胜任大规模文本的情况,开放式信息抽取(Open Information Extraction, OIE)在以英语为代表的西方语言中取得了重大进展,但对于汉语的研究却显得不足...
  • 实体识别和关系抽取的联合模型总结

    万次阅读 热门讨论 2019-02-27 17:15:25
    1.使用流水线方法进行抽取:先句子进行实体识别,然后识别出的实体两两组合,再进行关系分类,最后把存在实体关系的三元组做为输入。 缺点:1.错误传播,实体识别模块的错误会影响下面的关系分类性能。2.差生了...
  • 知识抽取-实体及关系抽取(一)

    万次阅读 2018-09-27 09:28:34
    知识抽取涉及的“知识”通常是 清楚的、事实性的信息,这些信息来自不同的来源和结构,而不同数据源进行的知识抽取的方法各有不同,从结构化数据中获取知识用 D2R,其难点在于复杂表数据的处理,包括嵌套表、多列...
  • HarvestText是一个专注无(弱)监督方法,能够整合领域知识(如类型,别名)特定领域文本进行简单高效地处理和分析的库。适用于许多文本预处理和初步探索性分析任务,在小说上分析,网络文本,专业文献等领域都有...
  • 利用bert对文本进行编码,对编码接入全连接或lstm+CRF,接入softmax即可得到每个类别的概率,最大概率对应的类别即为对应字的类别。 数据:病例本标签数据(数据在比赛...
  • 引言 本文关注的任务是从无结构的文本抽取实体以及实体之间的... Method)进行抽取:输入一个句子,首先进行命名实体识别,然后识别出来的实体进行两两组合,再进行关系分类,最后把存在实体关系的三元组
  • 对文本中的实体进行识别并把唯一的实体对象和百科知识库进行关联,对实体在当前上下文最合适的上位概念进行输出,进而达到准确辨识实体中文本的效果,具有实体链接和实体识别的功能,多在文本理解以及知识抽取等场景...
  • 联合学习(Joint learning)一词并不是一个最近才出现的术语,在自然语言处理领域,很早就有研究者使用基于传统机器学习的联合模型(Joint model)来一些有些密切联系的自然语言处理任务进行联合学习。例如实体...
  • 联合学习(Joint learning)一词并不是一个最近才出现的术语,在自然语言处理领域,很早就有研究者使用基于传统机器学习的联合模型(Joint model)来一些有些密切联系的自然语言处理任务进行联合学习。例如实体...
  • 梗概: 远程监督关系的抽取:被广泛用于从文本中找到新的关系,但这却总会伴着错误的... 输入一个句子以及两个实体,我们的model每个关系r的可能性进行计算 两个模块: Sentence Encoder:输入句子x和两个...
  • 这一章的内容主要负责一些初级部分,比如句子进行NP分块,识别名称实体进行关系的抽取。 这里不按照主题进行讨论,而按照方法范式进行讨论。 基于正则表达式的方法 基于正则表达式的方式十分容易理解,它就是...
  • 关系抽取综述

    千次阅读 2018-06-02 16:13:54
    1引言 关系抽取是信息抽取的重要子任务,其主要目的是将非结构化或半结构化描述的自然语言文本转化成结构化数据,关系抽取主要负责从文本中识别出实体抽取实体间的语义关系。现有主流关系抽取技术分为有监督关系...
  • 按字抽取每一个字进行分类识别(机器学习) 性能评价:采用比较常见的性能评价指标准确率Precision、召回率Recall和F1-Measure 一、文本预处理: 分词:方法一:查词典法,不断查找语词典一样的词语从而完成...
  • 用于对文本进行实体识别、语义标注的软件和源码的文档。
  • 在处理问答形式的文本时,除了文本实体间的关系抽取之外,作为连接问句与答句之间关系的提问模式同样需要抽取。通过有监督的标注算法(条件随机场)与基于模板元组自举的半监督算法的结合在抽取实体间关系时有...
  • 文本分类的基本原理

    2021-02-18 16:44:14
    文本分类用电脑对文本集(或其他实体或物件)按照一定的分类体系或标准进行自动分类标记。 它根据一个已经被标注的训练文档集合, 找到文档特征和文档类别之间的关系模型, 然后利用这种学习得到的关系模型对 新的文档...
  • 实体链接技术是将文本中的实体指称表述项正确链接到知识库中实体的过程,其中命名实体消歧的准确性直接影响实体链接的准确性。针对中文实体链接中命名实体的消歧,提出一种融合多种特征的解决方案。首先,以中文维基...
  • 医疗文本中存在大量的复合疾病名称,难以分离抽取出其中的实体。针对这一问题,提出一种基于多标签的条件随机场算法,首先数据标注多层标签,每层标签针对复合疾病名称中的不同疾病,然后用整合后的最终标签去训练...
  • 实体标注、序列标注工具-BIO方式

    千次阅读 热门讨论 2019-12-16 14:10:16
    笔者研究方向为NLP知识抽取,做实体抽取实验过程中需要训练数据进行标注。 我先使用jieba分词原文本进行分词和pos词性标注,然后基于pos词性标注抽取出文本中的公司名、证券、基金名称(这部分也可以使用正则...
  • 前一段时间在研究实体识别的任务,因为标签的设计觉得细粒度文本分类应该会任务的效果有所提升,于是搜集了一些细粒度文本分类的论文,本文将是这些论文的总结和思考。本文将简单介绍论文中模型的结构和设计思路...
  • 几个月前,数学家Andrew ...在他们的论文中,他们详细介绍了如何通过使用文本分析和实体抽取,来发现文本中提到的角色,从而构建角色互动网络。然后,他们应用社交网络分析算法到该网络中,以找到该网络中...

空空如也

空空如也

1 2 3 4 5 6
收藏数 103
精华内容 41
关键字:

对文本进行实体抽取