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

如何将DataFrame指定列替换为仅包含所有token词形还原(lemma)结果的字符串

Pandas DataFrame推文列词形还原实现方案

这里提供两种工业界常用的实现方式,可根据自己的场景选择:

方式1:基于NLTK实现

  • 先安装所需依赖:
    pip install nltk pandas
  • 完整实现代码:
import pandas as pd
import nltk
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk.tag import pos_tag

# 首次运行需要下载对应语料资源
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('wordnet')
nltk.download('omw-1.4')

# 辅助函数:将NLTK的词性标签转换为WordNet可识别的格式,提升还原准确率
def get_wordnet_pos(tag):
    if tag.startswith('J'):
        return wordnet.ADJ
    elif tag.startswith('V'):
        return wordnet.VERB
    elif tag.startswith('N'):
        return wordnet.NOUN
    elif tag.startswith('R'):
        return wordnet.ADV
    else:
        # 无匹配标签时默认按名词处理
        return wordnet.NOUN

lemmatizer = WordNetLemmatizer()
def text_to_lemmas(text):
    # 1. 对文本分词
    tokens = word_tokenize(text)
    # 2. 标注每个分词的词性
    token_pos = pos_tag(tokens)
    # 3. 逐个分词做词形还原
    lemma_list = [lemmatizer.lemmatize(token, pos=get_wordnet_pos(pos)) for token, pos in token_pos]
    # 4. 拼接为字符串返回
    return ' '.join(lemma_list)

# 对Text_Tweet列做批量替换
df['Text_Tweet'] = df['Text_Tweet'].apply(text_to_lemmas)

方式2:基于spaCy实现(准确率更高,更适合推文场景)

spaCy自带的预训练模型已经整合了分词、词性标注、词形还原能力,不需要手动处理词性映射,处理效率和准确率都更高。

  • 先安装依赖和预训练模型:
    pip install spacy pandas
    python -m spacy download en_core_web_sm
  • 完整实现代码:
import pandas as pd
import spacy

# 加载预训练模型,禁用不需要的管道组件提升处理速度
nlp = spacy.load('en_core_web_sm', disable=['parser', 'ner'])

def text_to_lemmas(text):
    doc = nlp(text)
    # 直接提取每个token的lemma_属性拼接即可
    return ' '.join([token.lemma_ for token in doc])

# 对Text_Tweet列做批量替换
df['Text_Tweet'] = df['Text_Tweet'].apply(text_to_lemmas)

小提示:如果推文中包含大量@提及、话题标签、表情符号等无关内容,可以先做文本清洗后再执行词形还原,结果会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:08