You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Flair(Hugging Face)的NER输出转换为DataFrame

将Flair NER识别结果转换为Pandas DataFrame

问题描述

我是Hugging Face新手,正在使用Flair的NER(命名实体识别)模块,相关代码及输出如下:

from flair.data import Sentence
from flair.models import SequenceTagger

# load tagger
tagger = SequenceTagger.load("flair/ner-german-large")

# make example sentence
sentence = Sentence("George Washington ging nach Washington")

# predict NER tags
tagger.predict(sentence)

# print sentence
print(sentence)

# print predicted NER spans
print('The following NER tags are found:')
# iterate over entities and print
for entity in sentence.get_spans('ner'):
    print(entity)

输出:

Span [1,2]: "George Washington"   [− Labels: PER (1.0)]
Span [5]: "Washington"   [− Labels: LOC (1.0)]

需要将上述输出转换为包含Token(NER实体)和Token_Type(如ORG或PER)列的DataFrame,生成的sentence对象类型为flair.data.Sentence。

解决方案

通过遍历sentence.get_spans('ner')返回的实体对象,提取实体文本和对应标签,再用Pandas创建DataFrame即可。具体代码如下:

import pandas as pd
from flair.data import Sentence
from flair.models import SequenceTagger

# 加载模型并执行预测(复用原有逻辑)
tagger = SequenceTagger.load("flair/ner-german-large")
sentence = Sentence("George Washington ging nach Washington")
tagger.predict(sentence)

# 提取NER实体与标签数据
ner_data = []
for entity in sentence.get_spans('ner'):
    ner_data.append({
        'Token': entity.text,
        'Token_Type': entity.tag
    })

# 转换为DataFrame
df = pd.DataFrame(ner_data)
print(df)

运行后输出的DataFrame格式如下:

Token Token_Type
0  George Washington        PER
1        Washington        LOC

关键说明

  • entity.text:获取实体的完整文本内容
  • entity.tag:获取实体对应的NER标签(如PER、LOC、ORG等)
  • 如果需要保留预测置信度,可额外添加'Confidence': entity.score字段到字典中

内容的提问来源于stack exchange,提问作者Aditya sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:45:49