如何根据方面术语和情感来标记文本

2024-01-11

我已编码按术语方面标记文本数据,然后使用维德词典进行情感标记。但结果只是输出-1表示负,1表示正,其中应该有正、负、中性3类。

这是代码:

import pandas as pd
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

# Define the aspect keywords
system_keywords = ['server', 'bug', 'error', 'sinyal', 'jaringan', 'login', 'update', 
                   'perbaruan', 'loading', 'aplikasi', 'fitur', 'UI/UX' , 'tampilan', 
                   'data', 'otp', 'keamanan']
layanan_keywords = ['customer service', 'cs', 'call center', 'telepon', 'email', 'beli', 
                    'pertalite', 'bbm', 'topup']
transaksi_keywords = ['cash', 'cashless', 'debit', 'tunai', 'scan', 'e-wallet', 
                      'linkaja', 'link', 'bayar', 'ovo', 'transaksi', 'pembayaran', 
                      'cashback', 'struk', 'tunai', 'nontunai']
subsidi_keywords = ['verifikasi', 'data', 'form', 'formulir', 'daftar', 'subsidi', 
                    'pendaftaran', 'subsidi', 'kendaraan', 'formulir', 'stnk', 'ktp', 
                    'nopol', 'no', 'kendaraan', 'nomor', 'polisi', 'foto', 'kendaraan', 
                    'alamat', 'provinsi', 'kota', 'kabupaten', 'kecamatan']
kebermanfaatan_keywords = ['bagus', 'mantap', 'recommend', 'oke', 'mudah', 'berguna', 
                           'membantu', 'simple', 'guna', 'bantu']

# Define a function to label the aspect based on the aspect keywords
def label_aspect(text):
    aspect_labels = [0] * 5 # Initialize all aspect labels to 0
    for i, keywords in enumerate([system_keywords, layanan_keywords, transaksi_keywords, 
           subsidi_keywords, kebermanfaatan_keywords]):
        for keyword in keywords:
            if keyword in text:
                aspect_labels[i] = 1
                break
    return aspect_labels

# Load the data into a DataFrame
data = {'content': ['Sejak menggunakan aplikasi mypertamina beli pertalite jadi lebih simple dan mudah karena aplikasi ini bener bener membantu untuk meringankan penjual dan pembeli recomend bisa bayar pakai tunai atau nontunai mantepp', 
                    'sering ada bug, aplikasi tidak user friendly. bingung dalam menginput data untuk subsidi. tidak ada notifikasi apakah data inputan sudah masuk atau belum. Tolong diperbaiki',
                    'Bagus juga aplikasi, kalo ada promo seperti ini kan para pemakai premium bisa jadi beralih ke pertalite bahkan pertamax. Coba ada promo2 lainnya seperti kerja sama dg situs belanja online ya min. Pertahankan min',
                    'kadang sulit di akses terakhir ada perintah update MyPertamina, saya ikuti, setelah update, jadi sulit masuk seolah data tidak ada, malah QR code tidak bisa muncul, dan belum sempat saya print',
                    'buruk, sudah coba daftar berkali kali tetap gak bisa. Mau beli bbm harus ada barcode, daftar susah ah bukan nya memudahkan rakyat malah tambah mempersulit']}
df = pd.DataFrame(data)

# Utilize nltk VADER to use custom lexicon
vader_lexicon = SentimentIntensityAnalyzer()

# Add the aspect columns to the DataFrame and label them
aspect_labels = df['content'].apply(label_aspect)
df['sistem'], df['layanan'], df['transaksi'], df['pendaftaran subsidi'], df['kebermanfaatan'] = zip(*aspect_labels)

# Apply Vader sentiment analysis to label the aspect columns
for col in ['sistem', 'layanan', 'transaksi', 'pendaftaran subsidi', 'kebermanfaatan']:
    df[col] = df['content'].apply(lambda x: 1 if vader_lexicon.polarity_scores(x) 
              ['compound'] >= 0.05 and df[col][0] == 1 else (-1 if 
              vader_lexicon.polarity_scores(x)['compound'] <= -0.05 and df[col][0] == 1 
              else 0))

# Display the resulting DataFrame
df

Here is the output enter image description here

输出结果仍然不正确。如示例数据所示:

  • “Sejak menggunakan aplikasi mypertamina beli pertalite jadi lebih simple dan mudah karena aplikasi ini bener bener membantu untuk meringankan penjual dan pembeli recomend bisa bayar pakai tunai atau nontunai mantepp”。在这句话中,subsidi_keywords方面没有包含任何单词,但是“pendaftaran subsidi”列中的结果包含值为1,应该包含值为0
  • “sering ada bug,applikasi tidak userFriendly。bingung dalam menginput data untuk subsidi。tidak ada notifikasi apakah data inputan sudah masuk atau belum。Tolong diperbaiki”。在这句话中,transaksi_keywords、layanan_keywords 和 kebermanfaatan_keywords 方面均不包含任何单词,但结果在“transaksi”列、“layanan”列和“kebermanfaatan”列中包含的值为 1,应包含的值为0

你的问题是你总是使用df[col][0]测试针对0 or 1,您应该在其中使用适当的内容行。您可以使用以下方法解决该问题np.where进行计算。请注意,您正在测试的 Vader 的结果是一个常数(每列不会变化),因此您可以在循环外计算它:

compound = df['content'].apply(lambda x: 1 if vader_lexicon.polarity_scores(x)['compound'] >= 0.05 else -1)
for col in ['sistem', 'layanan', 'transaksi', 'pendaftaran subsidi', 'kebermanfaatan']:
    df[col] = np.where(df[col] == 0, 0, compound)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据方面术语和情感来标记文本 的相关文章

随机推荐

  • 根据数据内容创建 RecyclerView 项目布局

    我正在创建数据对象的回收器视图 每个对象都会有所不同 例如 对象1 字符串标题 字符串描述 图像 对象2 字符串描述 对象3 图像 字符串链接 目标4 字符串描述 视频 etc 因此 我需要动态创建项目布局以适合每个数据对象 我不想创建一个
  • 如何在 PowerShell 中使用 REST API 在 TFS 中创建错误?

    我正在尝试使用 PowerShell 中的 REST API 使用下面的代码在 TFS 中创建一个错误 但我无法弄清楚如何填充 Bug具有这些参数和数据名称的变量 Param string vstsAccount MyAccountName
  • 安装插件后在 Firefox 中打开我的页面

    HI 我正在尝试在安装后第一次重新启动 Firefox 后打开我的主页 为此 我在加载页面上添加事件处理程序 并检查该事件第一次执行的位置 window addEventListener load initializeOverlay fal
  • 在 R 中将 unicode 字符保存为 .pdf

    我想将特定的 unicode 字符保存到 pdf 文件中ggsave 示例代码 library ggplot2 ggplot geom point data data frame x 1 y 1 aes x y shape u2191 ge
  • ArrayList中存储不同类型

    我想将元素存储在列表中 每个元素有4个参数 我正在尝试创建一个数组列表 为每个元素存储 4 个参数 它们是不同类型的 iD intx位置 浮动y 位置 浮动名称 字符串 I use ArrayList
  • SyntaxError:使用 jQuery.ajax() 的标签无效

    我正在尝试使用以下命令对我的服务器进行 Ajax 调用jQuery call ajax type GET dataType jsonp url http iceworld sls atl com api cmd time success f
  • Python 检查 gzip 存档的完整性

    Python 中有没有办法使用 gzip 或其他模块来检查 gzip 存档的完整性 基本上 Python 中是否有与以下内容等效的内容 gunzip t my archive gz 哎呀 第一个答案 现已删除 是误读问题的结果 我建议使用g
  • 什么是 IllegalStateException?

    我正在尝试使用遵循 Fastload API http developer teradata com doc connectivity jdbc reference current samp T20208JD java txt 连接 等都是
  • CasperJS并发请求

    假设我有一个网址数组 我不想使用打开功能 因为它会等待之前的每个 url 被加载 从而减少加载时间 casper each hrefs function self href self thenOpen href function self
  • Visual Studio 2008 上的 NuPack (NuGet)

    NuPack NuGet 可以安装在 Visual Studio 2008 上吗 不 它仅支持 VS 2010 From NuPack 常见问题解答 http nupack codeplex com wikipage title Frequ
  • 在 Mechanical Turk 中,如何限制每个工人只能获得 1 个 HIT

    我从与 Mechanical Turk 工人的交流中得知 有一种方法可以限制特定工人可以完成的 HIT 数量 但我不知道该怎么做 任何帮助将不胜感激 我开发了一个主要解决这个问题的脚本 主要思想是根据数据库检查工作人员 ID 然后如果工作人
  • Swift 中自定义 UICollectionViewCell 上的标签插座导致Optional.None崩溃

    我有一个 collectionViewController 我想显示一堆带有一些标签的自定义 UICollectionViewCells 不幸的是 每当我尝试访问自定义 UICollectionViewCell 的标签时 它都会导致崩溃 C
  • 使用 C# 从线路输入连续采样的最简单方法是什么

    我想使用 C 从 PC 的音频线路中连续采样 然后处理该数据 进行采样的最佳方法是什么 您可以使用开源进行一些 基本 音频捕获NAudio http www codeplex com naudio NET 音频库 查看 NAudioDemo
  • Tonumber 函数 (tonumber ‘(一二三) --> 123

    解决后如何拼写球拍中的数字 咒语编号 https stackoverflow com questions 22696615 how to spell a number in racket spellnum 22700116 noredire
  • 如何使用java将反斜杠替换为正斜杠?

    我正在将 CSV 文件导入 MySQL 数据库 这可以使用以下方法完成java mysql支持文件路径中的正斜杠 如果用户给出路径 c upload date csv sample csv MySQL 不支持这种类型的路径模式 我想在路径中
  • 发送 post 请求 python

    我有一个网站 我想检查它自上次检查 使用哈希 以来是否已更新 问题是我需要输入用户名和密码才能访问该网站 有没有办法使用python输入用户名和密码 查看requests http docs python requests org en l
  • Clojure 中的命名空间之间共享函数

    我很可能以错误的方式处理这个问题 所以请原谅我的天真 为了学习 Clojure 我开始将 Python 的 OAuth 客户端库移植到 Clojure 我通过包装 clj http 来做到这一点 就像我在 Python 库中包装 Pytho
  • 成功会话后获取 Stripe 处理费

    我们在应用程序中创建一个 Stripe 会话 如下所示 StripeConfiguration ApiKey ConfigurationManager AppSettings StripeKey var baseUrl Configurat
  • 重置必填字段 - jQuery

    我需要一些字段 具体取决于单击的按钮 但我所看到的行为并不是我所期望或希望的 当我单击其中一个按钮时 它会按照我的意愿设置必填字段 但是如果我单击另一个按钮 它不会由于某种原因重置它们 代码如下 感谢您的任何帮助 您可以提供 functio
  • 如何根据方面术语和情感来标记文本

    我已编码按术语方面标记文本数据 然后使用维德词典进行情感标记 但结果只是输出 1表示负 1表示正 其中应该有正 负 中性3类 这是代码 import pandas as pd from vaderSentiment vaderSentime