如何将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
相关产品推荐
相关产品推荐

