NLP---信息抽取

Information Extraction简介

抽取实体(entities):
·通用性:人(person), 地名(location),时间(time)
·专业性:医疗领域(蛋白质,疾病,药物)

抽取关系(relations)
·位于(located in), 工作在(work at), 部分(is part of)
基于规则的方法,基于监督学习的方法,boostrap方法,distant-supervision方法,
无监督学习
·实现消歧 ·实现统一 ·指代消解 ·句法分析 ·CKY算法

applications:
·知识库的搭建 ·Google Scholar,CiteSeerX
·用户库:Repleaf,Spoke ·购物引擎,产品搜索
·专利分析·证券分析·问答系统

NER(Named Entity Recongntion)

命名实体识别,也称为"专名识别",是指识别文本中具有特定意义的实体,主要包括人名,地名,机构名,专有名词

applications:
Chat bot中的"domain-intent-slots"在意图识别中要抽取实体。

English Toolkits:
·NLTK NE ·Spacy·Stanford Parser

Chinese Toolkits:
·Han NLP ·HIT NLP ·Fudan NLP ·or yours(自己搭建特定领域使用)

Creat NER Recognizer
·定义实体种类 ·准备训练数据 ·训练NER

Evaluate NER Recognizer: Precision/Recall/F_1score

Methods for NER:
·利用规则(比如正则)
·投票模型(Majority Voting)
·利用分类模型
\quad ·非时序模型:逻辑回归,SVM…
\quad ·时序模型:HMM,CRF,LSTM-CRF

Rule-based Approach
数据集

import pandas as pd
import numpy as np
data = pd.read_csv("ner_dataset.csv", encoding="latin1")
data = data.fillna(method="ffill")
data.tail(10)
words = list(set(data["Word"].values))
n_words = len(words)
35178

在这里插入图片描述

from sklearn.base import BaseEstimator, TransformerMixin
class MajorityVotingTagger(BaseEstimator, TransformerMixin):    
    def fit(self, X, y):
        """
        X: list of words
        y: list of tags
        """
        word2cnt = {}
        self.tags = []
        for x, t in zip(X, y):
            if t not in self.tags:
                self.tags.append(t)
            if x in word2cnt:
                if t in word2cnt[x]:
                    word2cnt[x][t] += 1
                else:
                    word2cnt[x][t] = 1
            else:
                word2cnt[x] = {t: 1}
        self.mjvote = {}
        
        for k, d in word2cnt.items():
            self.mjvote[k] = max(d, key=d.get)
    
    def predict(self, X, y=None):
        '''
        Predict the the tag from memory. If word is unknown, predict 'O'.
        '''
        return [self.mjvote.get(x, 'O') for x in X]
words = data["Word"].values.tolist()
tags = data["Tag"].values.tolist()
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import classification_report
pred = cross_val_predict(estimator=MajorityVotingTagger(), X=words, y=tags, cv=5)
report = classification_report(y_pred=pred, y_true=tags)
print(report)

在这里插入图片描述

特征工程与特征表示

提取每个单词的最简单的特征,比如单词长度等等
The professor Colin proposed a model for NER in 1999

  1. bag-of-word features:当前词,前后词,前前后后词,Bi-gram,Tri-gram
  2. pos-tagging词性
  3. 前缀&后缀
  4. 当前词的特性:词长,含有大写字母,含有“-”
  5. stemming + “重复”

常见的特征种类:

  1. 分类型 (category)
  2. 连续型(continuous):直接用/转换成分布式
  3. ordinal feature:直接用/当做类别特征使用

Ontological Relaton(实体关系)

·IS-A(Hypernym Relation)
·Instance-of

关系抽取方法介绍:关系抽取常用算法

实现消歧(Entity Disambiguiation)

实体消歧的本质在于一个词很有可能有多个意思,也就是在不同的上下文中所表达的含义不太一样

实现统一(Entity Resolution)

①sim(str1,str2) —计算编辑距离
②基于规则,利用stemming,提取关键信息
③基于图的实体统一,进行特征工程编辑,计算相似度

指代消解(co-reference Resolution)

① supervised learning: 准备训练数据,进行算法的二分类

句法分析(Parsing)

要理解一个句子,有两种方法:
①句法分析(主谓宾)
②通过语言模型—>结合上下文填空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值