pandas apply调用词性标注函数每行返回相同全量结果问题排查
问题根因
你写的postagging函数逻辑有误:
- 用
pandas.Series.apply逐行处理数据时,函数接收到的text参数就是当前行的emotion字段值 - 但你的函数完全没用到这个入参,反而直接把全量的
df.emotion列传入标注接口,导致每处理一行都会对整个数据集做一次词性标注,所有行返回的都是全量标注结果。
修复代码
ct.tag_sents接收的入参是分词后的句子列表,处理单行文本时只需对当前传入的text分词后传入即可,参考代码如下:
def postagging(text): # 替换成你实际使用的分词逻辑,比如用jieba分词就写tokenized_text = jieba.lcut(text) tokenized_text = list(text) # 传入单条分词文本,取返回列表第一个元素即为当前文本的标注结果 return ct.tag_sents([tokenized_text])[0] df['pos_emotion'] = df['emotion'].apply(postagging)
错误运行截图

内容的提问来源于stack exchange,提问作者Marshall
相关产品推荐
相关产品推荐

