自然语言处理中的实体识别技术

自然语言处理(NLP)是语言学的一个分支,专注于计算机理解文本或语音形式语言的能力。NLP的任务包括语音识别、情感分析和命名实体识别(NER)。本文将重点介绍NER及其在现实世界中的用例,并最终使用HuggingFace嵌入训练自定义模型。

什么是NER?

NER,即命名实体识别,是NLP中用于识别和提取预定义(或预训练)类别实体的关键组成部分。这些实体可以是人名、地点、组织、国家、城市等,具体取决于训练模型的类别。例如,在给定的例子中,模型可以提取人名、组织和地点实体。

NER的应用和用例

NER在现实世界中有多种应用,包括但不限于:

1) 高效的搜索算法:NER可以从搜索查询中提取相关实体,以获得更好的搜索结果。

2) 简历解析:在各种公司和跨国公司中,NER用于简历解析,通过提取候选人的相关信息来筛选出数千名申请者中的最佳候选人。

3) PII(个人身份信息)提取:保护用户的个人信息是每个公司都需要关注的重要任务。NER有助于提取PII实体,如姓名、出生日期、信用卡号、社会安全号码、电话号码等,以便进行掩码处理。

4) 聊天机器人:NER最常见的用途之一是聊天机器人。聊天机器人使用NER提取关键词以回答用户查询。

训练自定义NER模型

将使用Hugging Face(一个提供开源NLP技术的公司)的Flair嵌入来训练自己的NER模型。训练NER模型需要大量的数据,但不用担心,CoNLL-2003数据集可以提供帮助。CoNLL-2003包含大量注释和未注释的数据集,用于训练、测试和验证。

NER数据集应包含两列,由单个空格分隔。第一列包含一个单词,第二列包含命名实体标签。注意:第一列必须包含一个单词。CoNLL-03包含4列,第一列包含单个单词,第二列是词性标注,第三列是句法块标签,第四列是命名实体标签。在大多数情况下,第二列和第三列是可选的。

安装Flair:

pip install flair

导入所需的类和嵌入:

from flair.data import Corpus from flair.datasets import CONLL_03 from flair.embeddings import WordEmbeddings, StackedEmbeddings, FlairEmbeddings

初始化所需的变量:

corpus: Corpus = CONLL_03() tag_type = 'ner' tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)

初始化想要用于模型训练的嵌入。Huggingface提供了多种嵌入,每种嵌入都有其独特的用途。

embedding_types = [     # GloVe嵌入     WordEmbeddings('glove'),     # 上下文字符串嵌入,向前     FlairEmbeddings('news-forward'),     # 上下文字符串嵌入,向后     FlairEmbeddings('news-backward'), ]

使用StackedEmbeddings组合所有嵌入:

embeddings = StackedEmbeddings(embeddings=embedding_types) from flair.models import SequenceTagger tagger = SequenceTagger(hidden_size=256,     embeddings=embeddings,     tag_dictionary=tag_dictionary,     tag_type=tag_type) from flair.trainers import ModelTrainer trainer = ModelTrainer(tagger, corpus) trainer.train('resources/taggers/ner-english', train_with_dev=True, max_epochs=150) from flair.data import Sentence from flair.models import SequenceTagger model = SequenceTagger.load('resources/taggers/ner-english/final-model.pt') sentence = Sentence("George Washington lives in Washington") model.predict(sentence) for entity in sentence.get_spans('ner'): print(entity)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485