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

如何无需翻译为英文直接对印尼语文本使用sentiment polarity判定情感

印尼语推特直接情感分析实现方案

完全不需要先翻译为英文,直接基于印尼语本地词库+Sastrawi分词即可实现,具体方案如下:

1. 前置准备

首先安装所需依赖:

pip install Sastrawi

另外准备印尼语情感词表,你可以直接使用公开的印尼语情感词典(比如InSet词典),分别整理为两个纯文本文件:

  • kata_positif.txt:每行存储一个印尼语正面情感词
  • kata_negatif.txt:每行存储一个印尼语负面情感词

2. 核心实现逻辑

替换你原有代码中TextBlob翻译+情感判定的部分即可,完整的修改后代码如下:

import re
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory
from Sastrawi.StopWordRemover.StopWordRemoverFactory import StopWordRemoverFactory

# 初始化印尼语词干提取器、停用词移除器
stemmer = StemmerFactory().create_stemmer()
stopword_remover = StopWordRemoverFactory().create_stop_word_remover()

# 加载情感词表
with open('kata_positif.txt', 'r', encoding='utf-8') as f:
    positif_words = set([line.strip() for line in f.readlines()])
with open('kata_negatif.txt', 'r', encoding='utf-8') as f:
    negatif_words = set([line.strip() for line in f.readlines()])

hasilAnalisis = []
for tweets in hasilUser:
    tweets_properties = {}
    tweets_properties['tanggal_tweet'] = tweets.created_at
    tweets_properties['pengguna'] = tweets.user.screen_name
    tweets_properties['isi_tweet'] = tweets.text
    # 原有文本清洗逻辑
    tweets_full_cleansing = ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",tweets.text).split())
    # 新增印尼语文本预处理:去停用词+词干提取
    tweets_clean = stopword_remover.remove(tweets_full_cleansing)
    tweets_stemmed = stemmer.stem(tweets_clean)
    word_list = tweets_stemmed.split()
    # 计算情感极性
    count_pos = 0
    count_neg = 0
    for word in word_list:
        if word in positif_words:
            count_pos +=1
        elif word in negatif_words:
            count_neg +=1
    # 极性得分计算,分母加1避免除以0
    polarity = (count_pos - count_neg) / (count_pos + count_neg + 1)
    # 情感判定
    if polarity > 0:
        tweets_properties["sentimen"] = "positif"
    elif polarity == 0:
        tweets_properties["sentimen"] = "Netral"
    else:
        tweets_properties["sentimen"] = "Negatif"
    # 原有去重逻辑
    if tweets.retweet_count > 0:
        if tweets_properties not in hasilAnalisis:
            hasilAnalisis.append(tweets_properties)
    else:
        hasilAnalisis.append(tweets_properties)

3. 方案优势

  • 无需调用翻译接口,没有网络请求延迟,也不会因为翻译误差导致情感判定结果偏差
  • 完全本地运行,不会触发翻译接口的频次限制
  • 针对印尼语的特性做了词干提取和停用词过滤,判定准确率比翻译后再分析更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:02