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


前言

命名实体识别(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 任务变得非常方便。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值