coreNLP是斯坦福大学开发的关于自然语言处理的工具,包含了命名实体识别、词性标注、分词器等等功能,功能强大使用方便。可以在官网上下载coreNLP系列文件:https://stanfordnlp.github.io/CoreNLP/index.html#download
并在本地进行安装,注意需要首先安装java。
可以在网上搜索相关安装教程,本文重点是介绍如何通过stanford NER CRF训练出自己的NER模型。
1.NER简介
命名实体识别(Named Entity Recognition)是自然语言处理中比较常见的功能,使用范围广泛,是信息提取、句法分析、机器翻译等应用领域的基础工具。
命名实体通常指的是文本中具有特殊意义或指代性很强的实体,通常包括人名、地名、机构名、时间日期、专有名词等。NER就是从文本中识别上述实体。斯坦福的NER模型是基于条件随机场(Conditional Random Field, CRF)算法实现的。具体算法实现在另一篇文章中详述。
为了更好地使用斯坦福的NER工具,最好看一下CRFClassifier和NERFeartureFactory两个class的源码。
2. 数据准备
在本文的例子中,原始数据为公司招聘信息文本(JD),目的是抽取其中的“专业”名词,例如“工商管理”、“机械自动化”等等专业名词。选择了文本中的2000行进行手动标注,将其中80%的数据作为训练数据train.tsv,剩下的20%数据作为测试数据test.tsv。
训练数据必须是用tab分隔的多列形式,至少有两列