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

基于正负情感词库的after_tokenize.xlsx文本情感标注实现咨询

完整实现代码

import pandas as pd
import nltk

# 1. 读取三个数据文件,替换为你本地的实际文件路径即可
df = pd.read_excel('after_tokenize.xlsx')
pos = pd.read_excel('positive.xlsx')
neg = pd.read_excel('negative.xlsx')

# 注意:如果after_tokenize.xlsx中的data列已经是分词完成的列表格式,可删除下面这行分词代码
# 首次运行分词报错的话,先执行一次 nltk.download('punkt') 下载依赖包
df['data'] = df.apply(lambda row: nltk.word_tokenize(row['data']), axis=1)

# 2. 把正负情感词转为集合,大幅提升匹配速度
pos_words = set(pos['positive'].str.strip())
neg_words = set(neg['negative'].str.strip())

# 3. 定义标注规则函数
def sentiment_label(word_list):
    pos_cnt = sum(1 for w in word_list if w in pos_words)
    neg_cnt = sum(1 for w in word_list if w in neg_words)
    if pos_cnt > neg_cnt:
        return 'positive'
    elif neg_cnt > pos_cnt:
        return 'negative'
    # 正负词数量相等的情况可自定义规则,比如返回neutral,此处默认留空可自行修改
    else:
        return ''

# 4. 批量标注生成label字段
df['label'] = df['data'].apply(sentiment_label)

# 5. 导出标注完成的结果到Excel
df.to_excel('labeled_after_tokenize.xlsx', index=False)

关键说明

  • 正负情感词转用集合存储,是为了把单次匹配的时间复杂度从O(n)降到O(1),数据量大的时候性能提升非常明显
  • 若你的after_tokenize.xlsx里的data字段已经是分词后的列表结构,直接删除tokenize相关代码即可,避免重复分词出错
  • 正负词数量相等的情况你可以根据自身需求修改else分支的返回值,比如设置为neutral或者其他自定义标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:45:03