自然语言处理中的信息抽取有:关系抽取、实体抽取、事件抽取
NLTK | NLTK是一个高效的Python构建的平台,用来处理人类自然语言数据。 |
SpaCy | 工业级的自然语言处理工具,遗憾的是不支持中文。 |
关系抽取从流程上,可以分为流水线式抽取(Pipline)和联合抽取(Joint Extraction)两种,流水线式抽取就是把关系抽取的任务分为两个步骤:首先做实体识别,再抽取出两个实体的关系;而联合抽取的方式就是一步到位,同时做好了实体和关系的抽取。流水线式抽取会导致误差在各流程中传递和累加,而联合抽取的方式则实现难度更大。
关系抽取从实现的算法来看,主要分为四种:
1、手写规则(Hand-Written Patterns);
优点是抽取的三元组查准率(Precision)高,尤其适合做特定领域的关系抽取;缺点是查全率(Recall)很低,也就是说查得准,但是查不全,而且针对每一种关系都需要手写大量的规则,比较惨。
2、监督学习算法(Supervised Machine Learning);
监督学习的优点是,如果标注好的训练语料足够大,那么分类器的效果是比较好的,可问题是标注的成本太大了。
3、半监督学习算法(Semi-Supervised Learning,比如Bootstrapping和Distant Supervision);
半监督学习的算法主要有两种:Bootstrapping和Distant Supervision。Bootstrapping不需要标注好实体和关系的句子作为训练集,不用训练分类器;而Distant Supervision可以看做是Bootstrapping和Supervise Learning的结合,需要训练分类器。
4、无监督算法。