上周就关于《结构化感知机标注框架的内容》已经分享了一篇《分词工具Hanlp基于感知机的中文分词框架》,本篇接上一篇内容,继续分享词性标注与命名实体识别框架的内容。
词性标注
训练
词性标注是分词后紧接着的一个任务,训练语料同上,接口如下:
命令行
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个词语所属的命名实体成分。
相关推荐
命名实体识别(Named Entity Recognition,NER)是自然语言处理领域的一项关键任务,旨在从文本中识别和分类特定的命名实体,如人名、地名、组织机构名等。NER的目标是标记文本中的实体,并将其归类到预定义的实体...
本系统的设计思路基于自然语言处理(NLP)技术,使用PYLTP库实现中文分词、词性标注、命名实体识别、依存句法分析和语义角色标注等功能。同时,系统还使用深度学习算法,例如递归神经网络(RNN)和长期记忆网络...
本项目采用基于启发式规则的筛选、基于KNN的实体筛选和分类、分词及词性标注、语料库筛选等技术来实现实体识别和关系提取。并使用远程监督的方法来解决训练样本获取困难的问题,通过生成语句的句法分析树,可以获得...
当涉及到数据分析时,pandas、numpy、matplotlib 和 nltk 是四个非常常用的 Python 库。这些库各自有特定的用途,并且经常一起使用以执行复杂的数据...主要功能:分词、词性标注、命名实体识别、文本分类、情感分析等
4. KGQA模块是问答系统模块,主要进行分词、词性标注、命名实体识别。 5. templates模块是HTML页面模块,包括欢迎界面、搜索人物关系页面、人物关系全貌页面人物关系问答页面。 6. static模块存放css和js,是页面...
它将古籍视为一种自然语言文本,通过分词、词性标注、命名实体识别等技术,提取文本中的语义信息。自责法的优点在于它能够理解古籍中的语义信息,自动提取出关键词、概念和实体,方便学者们的研究。自责法还可以将...
与传统的命名实体识别任务不同,术语识别任务需要在特定的领域将实体类型加以拓展。近年来,领域术语识别在情报学研究中逐渐兴起,诸如医疗、专利术语识别等都是学者们比较关注的方向。目前,术语识别方法分为基于...
文本挖掘涉及一系列自然语言处理技术,包括分词、词性标注、命名实体识别、信息抽取等预处理技术,以及文本聚类、文本分类、文本情感分析、自动文摘等核心应用算法。 深度学习是近年来人工智能领域的一个热门研究...
4. KGQA模块是问答系统模块,主要进行分词、词性标注、命名实体识别。 5. templates模块是HTML页面模块,包括欢迎界面、搜索人物关系页面、人物关系全貌页面人物关系问答页面。 6. static模块存放css和js,是页面...
它主要涉及自然语言处理领域的两个经典问题实体识别 (Entity Recognition) 与实体消歧 (Entity Disambiguation),简单地来说,就是要从文档中识别出人名、地名、机构名、电影等命名实体。并且,在不同环境下同一实体...
命名实体识别和指代 1. 设D(i,j)为A[1…i]和B[1…j]的最短编辑距离 2. 目标是让 A 靠近 B 语言模型 1. P(|1,…,―1) 2. 由于数据不足,假设 Markov 性质成立 Shannon 可视化方法 1. 根据概率选 2. 然后根据给定...
在主题-关系推理方面,Collobert等人[12]使用卷积神经网络,构建出一个以语义角色标注(Semantic Role Labeling,SRL)为主任务,包含词性(Part-of-Speech,POS)标注、浅层句法分析(Chunking)、命名实体识别...
命名实体识别 (4).句法分析 1).句法结构分析 2).依存句法分析 (5).⽂本向量化 1).tf-idf 2).word2vec 3).doc2vec 4).cw2vec (6).距离计算 1).欧⽒距离 2).相似度计算 7.优化算法 (1).正则化 1).L1正则化 2).L2正则化...
word源码java 节点斯坦福corenlp 不再维护。 斯坦福 CoreNLP 的简单 node.js ...标注器、命名实体识别器 (NER)、解析器和共指解析系统,并提供用于分析英语的模型文件。 该项目的目标是使人们能够快速、轻