基于结构化感知机的词性标注与命名实体识别框架

简介: 上周就关于《结构化感知机标注框架的内容》已经分享了一篇《分词工具Hanlp基于感知机的中文分词框架》,本篇接上一篇内容,继续分享词性标注与命名实体识别框架的内容。词性标注训练词性标注是分词后紧接着的一个任务,训练语料同上,接口如下: 命令行java -cp hanlp.

上周就关于《结构化感知机标注框架的内容》已经分享了一篇《分词工具Hanlp基于感知机的中文分词框架》,本篇接上一篇内容,继续分享词性标注与命名实体识别框架的内容。

644bd889f37f8538cfa57caed232964cfbd05b3e

词性标注

训练

词性标注是分词后紧接着的一个任务,训练语料同上,接口如下:

 

命令行

java -cp hanlp.jar com.hankcs.hanlp.model.perceptron.Main -task POS -train -reference data/test/pku98/199801.txt -model data/test/perceptron/pos.bin

 

API

public void testTrain() throws Exception

{

    PerceptronTrainer trainer = new POSTrainer();

    trainer.train("data/test/pku98/199801.txt", Config.POS_MODEL_FILE);

}

 

测试

词性标注器接受的输入不再是纯文本,而是分词后的单词数组或列表:

 

public void testLoad() throws Exception

{

    PerceptronPOSTagger tagger = new PerceptronPOSTagger(Config.POS_MODEL_FILE);

    System.out.println(Arrays.toString(tagger.tag("中国 交响乐团 谭利华 在 布达拉宫 广场 演出".split(" "))));

}

正常情况下输出每个单词的词性:

[ns, n, nr, p, ns, n, v]

关于如何组合分词器和词性标注器,使其同时进行分词与词性标注,请参考接下来的章节。

 

命名实体识别

目前本系统默认支持人名(nr),地名(ns),机构名(nt)三种命名实体的识别,用户可以重载NERTrainer的createTagSet来支持任意NER类型。

训练

命名实体识别是词性标注的后续任务,训练语料依然同上,接口如下:

 

命令行

java -cp hanlp.jar com.hankcs.hanlp.model.perceptron.Main -task NER -train -reference data/test/pku98/199801.txt -model data/test/perceptron/ner.bin

 

API

public void testTrain() throws Exception

{

    PerceptronTrainer trainer = new NERTrainer();

    trainer.train("data/test/pku98/199801.txt", Config.NER_MODEL_FILE);

}

 

自定义NER类型

重载NERTrainer的createTagSet来支持自己的NER类型。当然,用户提供的语料必须满足2014人民日报格式。

 

        PerceptronTrainer trainer = new NERTrainer()

        {

            @Override

            protected TagSet createTagSet()

            {

                NERTagSet tagSet = new NERTagSet();

                tagSet.nerLabels.add("YourNER1");

                tagSet.nerLabels.add("YourNER2");

                tagSet.nerLabels.add("YourNER3");

                return tagSet;

            }

        };

测试

命名实体识别器的输入不再是纯文本,而是分词结果与词性标注结果:

 

public void testTag() throws Exception

{

    PerceptionNERecognizer recognizer = new PerceptionNERecognizer(Config.NER_MODEL_FILE);

    System.out.println(Arrays.toString(recognizer.recognize("吴忠市 乳制品 公司 谭利华 来到 布达拉宫 广场".split(" "), "ns n n nr p ns n".split(" "))));

}

 

正常情况下输出:

[B-nt, M-nt, E-nt, S, O, S, O]

7个标签代表上述7个词语所属的命名实体成分。

 

相关文章
|
自然语言处理 算法 机器人
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
|
11天前
|
机器学习/深度学习 数据采集 自然语言处理
如何使用深度学习模型来提高命名实体识别的准确率?
如何使用深度学习模型来提高命名实体识别的准确率?
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
如何使用深度学习模型来提高命名实体识别的准确率
如何使用深度学习模型来提高命名实体识别的准确率
|
6月前
|
JSON 自然语言处理 安全
微调大型语言模型进行命名实体识别
大型语言模型的目标是理解和生成与人类语言类似的文本。它们经过大规模的训练,能够对输入的文本进行分析,并生成符合语法和语境的回复。这种模型可以用于各种任务,包括问答系统、对话机器人、文本生成、翻译等。
181 1
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【论文精读】AAAI 2022- 统一的命名实体识别作为词与词之间的关系分类
【论文精读】AAAI 2022- 统一的命名实体识别作为词与词之间的关系分类
【论文精读】AAAI 2022- 统一的命名实体识别作为词与词之间的关系分类
|
6月前
|
机器学习/深度学习 移动开发 自然语言处理
基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践
基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践
基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践
bert知识库问答 实现建筑领域的问答匹配 文本相似性计算 完整代码数据
bert知识库问答 实现建筑领域的问答匹配 文本相似性计算 完整代码数据
100 0
|
自然语言处理 数据处理
浅析命名实体识别(NER)的三种序列标注方法
简述序列标注 序列标注(Sequence Tagging)是NLP中最基础的任务,应用十分广泛,如分词、词性标注(POS tagging)、命名实体识别(Named Entity Recognition,NER)、关键词抽取、语义角色标注(Semantic Role Labeling)、槽位抽取(Slot Filling)等实质上都属于序列标注的范畴。
|
设计模式 存储 分布式计算
[万字长文]知识图谱之本体结构与语义解耦——知识建模看它就够了!
过去两年多的时间,针对蚂蚁域内业务场景和知识体系多样、复杂,知识建模成本高导致图谱项目启动难的问题,我们提出了一种结构与语义解耦的知识建模及schema设计方法,并在商家图谱、事理图谱、保险图谱等多个项目中进行实践。相关简化schema设计及帮助对知识的属性语义化、标准化的能力已经集成到蜘蛛知识平台。本文总结了我们过去所工作,沉淀为体系化的方法论,并针对不同复杂程度的知识建模问题,进行实操指南。
10034 3
|
机器学习/深度学习 人工智能 自然语言处理
深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)
深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)
深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)