首页 > 其他分享 >一起学Hugging Face Transformers(18) - 使用Transformers 库实现命名实体识别(NER)

一起学Hugging Face Transformers(18) - 使用Transformers 库实现命名实体识别(NER)

时间:2024-07-16 09:58:10浏览次数:14  
标签:Transformers 18 Label Hugging Entity Start End model entity

文章目录


前言

命名实体识别(NER)是自然语言处理(NLP)中的一种任务,旨在识别文本中具有特定意义的实体,例如人名、地名、组织名等。NER 在信息抽取、文本分析和许多其他 NLP 应用中具有重要作用。本文将介绍如何使用 Hugging Face 的 transformers 库来实现 NER。

1. 环境配置

首先,我们需要安装必要的库。确保你已经安装了 transformerstorch 库。如果还没有安装,可以使用以下命令进行安装:

pip install transformers torch

2. 加载模型和分词器

Hugging Face 提供了许多预训练的模型用于 NER 任务,例如 BERT、RoBERTa 等。这里我们以 BERT 为例。我们需要加载预训练的 BERT 模型和对应的分词器。

from transformers import AutoModelForTokenClassification, AutoTokenizer

# 加载BERT模型和分词器
model_name = 'dbmdz/bert-large-cased-finetuned-conll03-english'
model = AutoModelForTokenClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

3. 创建命名实体识别管道

Hugging Face 的 pipeline API 使得我们可以很方便地创建 NER 管道,并直接对文本进行命名实体识别。

from transformers import pipeline

# 创建NER管道
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)

4. 输入文本进行识别

我们可以将文本传递给 NER 管道进行命名实体识别,并输出结果。

# 输入文本
text = "Hugging Face Inc. is a company based in New York City. Its headquarters are in DUMBO, therefore very close to the Manhattan Bridge."

# 进行命名实体识别
ner_results = ner_pipeline(text)

# 打印识别结果
for entity in ner_results:
    print(f"Entity: {entity['word']}, Label: {entity['entity']}, Start: {entity['start']}, End: {entity['end']}")

5. 完整代码示例

将上述步骤整合在一起,我们得到如下的完整代码示例:

from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline

# 加载BERT模型和分词器
model_name = 'dbmdz/bert-large-cased-finetuned-conll03-english'
model = AutoModelForTokenClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 创建NER管道
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)

# 输入文本
text = "Hugging Face Inc. is a company based in New York City. Its headquarters are in DUMBO, therefore very close to the Manhattan Bridge."

# 进行命名实体识别
ner_results = ner_pipeline(text)

# 打印识别结果
for entity in ner_results:
    print(f"Entity: {entity['word']}, Label: {entity['entity']}, Start: {entity['start']}, End: {entity['end']}")

6. 结果解释

运行上述代码后,你将看到每个识别到的实体、其标签以及在原始文本中的起始和结束位置。例如:

Entity: Hugging, Label: B-ORG, Start: 0, End: 7
Entity: Face, Label: I-ORG, Start: 8, End: 12
Entity: Inc., Label: I-ORG, Start: 13, End: 17
Entity: New, Label: B-LOC, Start: 38, End: 41
Entity: York, Label: I-LOC, Start: 42, End: 46
Entity: City, Label: I-LOC, Start: 47, End: 51
Entity: DUMBO, Label: B-LOC, Start: 74, End: 79
Entity: Manhattan, Label: B-LOC, Start: 101, End: 110
Entity: Bridge, Label: I-LOC, Start: 111, End: 117

总结

通过本文,我们了解了如何使用 Hugging Face 的 transformers 库和预训练的 BERT 模型来实现命名实体识别。这个过程包括加载模型和分词器、创建 NER 管道、对文本进行识别以及解释识别结果。Hugging Face 的 transformers 库提供了强大而简洁的工具,使得实现各种 NLP 任务变得非常方便。

标签:Transformers,18,Label,Hugging,Entity,Start,End,model,entity
From: https://blog.csdn.net/kljyrx/article/details/140457026

相关文章

  • 0187-实现换行输出
    环境Time2022-11-13WSL-Ubuntu22.04QEMU6.2.0Rust1.67.0-nightlyVSCode1.73.1前言说明参考:https://os.phil-opp.com/vga-text-mode目标使用VGA输出的时候,在一行已经满的情况下,自动换行输出。易失操作对于输出到屏幕,为了避免编译器优化,需要增加一个副作用。v......
  • 0188-输出宏和错误信息
    环境Time2022-11-13WSL-Ubuntu22.04QEMU6.2.0Rust1.67.0-nightlyVSCode1.73.1前言说明参考:https://os.phil-opp.com/vga-text-mode目标可以使用println!宏向屏幕输出错误,发送错误时,可以打印错误信息。Cargo.toml其中的spin为全局锁需要,lazy_static为静态......
  • 0189-输出 PPM 图片
    环境Time2022-11-14WSL-Ubuntu22.04Rust1.65.0前言说明参考:https://raytracing.github.io/books/RayTracingInOneWeekend.html目标编写一个简单的程序,输出一张.ppm格式的图片并查看。ppm格式ppm是一种用ascii字符来表示图片的方式。具体内容参考:https://zh.......
  • 数据结构与算法 —— Transformers之Pipeline
    Transformers之Pipeline是HuggingFaceTransformers库中提供的一种使用预训练模型进行推理的极简方式。这些Pipeline对象从库中抽象出大部分复杂代码,为多项任务(如命名实体识别、情感分析、特征提取和问答等)提供了简单的API。以下是对Transformers之Pipeline的详细介绍:一、......
  • Oracle 18c&19c physical dg切换总结
    这篇文章总结Oracle18c/19cPhysicalStandbyDG的主备切换的操作流程,主要参考官方文档18c&19cPhysicalStandbySwitchoverBestPracticesusingSQL*Plus(DocID2485237.1)[1].由于参考官方的最佳实践,所以有些步骤/过程略显繁琐。其实正常情况下,这里面的很多步骤都可以......
  • #BAS3102. 练18.2 苹果和虫子
    3102:练18.2苹果和虫子【题目描述】你买了一箱......
  • 打卡信奥刷题(332)用Scratch图形化工具信奥B3739[普及组/提高] [信息与未来 2018] 整数
    [信息与未来2018]整数乘方题目描述定义aaa的nnn次幂......
  • 【语音去噪】软阈值+硬阈值+软硬折中阈值语音去噪【含 GUI Matlab源码 1810期】
    ......
  • 题解:CF1833F Ira and Flamenco
    思路因为要一个长度为\(m\)的,且最大与最小的元素之差小于等于\(m\)所以序列应为\(a_i,a_i+1,a_i+2\dots,a_i+m-1\),所以满足要求的序列之需要连续\(m\)个就行了,这个最开始排序,去重后用lower_bound求一下小于\(a_i+m-1\)的数有没有\(m\)个就行了。考虑满足要求序列的......
  • Ubuntu 18.04安装docker记录
    Docker简介Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux服务器上。Docker安装步骤检查卸载老版本的docker,Ubuntu可能自带低版本的docker,需要先卸载再安装新的版本的:sudoapt-getremovedockerdocker-e......