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

如何对DataFrame中的POS标注列进行正确词形还原?

解决POS标注列的词形还原问题

你的问题核心出在词形还原函数的return语句位置错误——它被放在了for循环内部,导致函数刚处理完第一个词就直接返回结果,自然只能得到第一个词的还原输出。

修正后的词形还原函数

我们只需要把return语句移到for循环外面,让它在所有词处理完成后再返回完整结果;同时可以优化字符串初始化逻辑,避免结果开头出现多余空格:

from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()

def lemmatize(pos_data):
    lemma_rew = ""  # 初始化空字符串,避免开头冗余空格
    for word, pos in pos_data:
        if not pos:
            lemma = word
        else:
            lemma = wordnet_lemmatizer.lemmatize(word, pos=pos)
        lemma_rew += " " + lemma
    return lemma_rew.strip()  # 去除首尾多余空格,让结果更整洁

完整应用流程

将修正后的函数应用到你的DataFrame列即可:

df['Lemma'] = df['POS_tagged'].apply(lemmatize)

关键改动说明

  • 把return lemma_rew移到for循环外部,确保遍历完所有(word, pos)元组后,再返回拼接好的完整结果
  • 优化字符串初始化与收尾处理,避免结果出现不必要的空格
  • 简化条件分支里的拼接逻辑,让代码更易读

这样处理后,df['Lemma']列就能得到每条推文所有词汇的完整词形还原结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:40:39