细粒度情感分析技术与应用

随着线上业务的蓬勃发展,品牌和企业越来越重视客户评价。因此,情感分析成为了过去十年研究的热点领域。企业投入巨资开发高效的情感分类器

在探索中,发现大多数分类器采用二元分类(仅区分正面和负面情感),其中一个原因是细粒度分类器更具挑战性,且相关资源较少。

细粒度分析的关键在于,它不仅能够识别谁在谈论产品,还能精确地了解反馈中具体讨论的内容。例如,对于比较表达式如“Scam 1992Mirzapur 2好得多。”,细粒度情感分析能提供比常规二元情感分类器更精确的信息。此外,双极性评论如“地点真的很差……但那里的人很出色。”可能会使二元情感分类器给出错误的预测。

上述优势足以激发进行细粒度情感分析的动力。

如何进行细粒度情感分析:方法和工具

数据收集和准备。使用Pythonseleniumbeautifulsoup库从Amazon抓取了前100条智能手机评论。如果不熟悉Pythonbeautifulsoup,并请求一个用于网络抓取的库,这里有一个快速教程。

SeleniumPython绑定提供了一个简单的API,用于使用Selenium WebDriver编写功能/验收测试。

import requests from fake_useragent import UserAgent import csv import re from selenium import webdriver from bs4 import BeautifulSoup from selenium import webdriver

首先导入一些库。requests库用于向URL发送请求并接收网页内容。BeautifulSoup用于将网页内容格式化为更易读的格式。selenium用于自动化抓取网页的过程,没有selenium,必须发送头部和cookies,发现这个过程更繁琐。

搜索产品并获取ASIN(亚马逊标准识别号)。现在将创建基于搜索查询的辅助函数,获取所有产品的ASIN号码。这些ASIN号码将帮助稍后创建每个产品的URL。创建了两个函数searching()asin(),它们搜索网页并存储所有ASIN号码在列表中。发现,当在亚马逊上搜索特定产品时,其URL可以分为三部分。

def searching(url,query,page_no): """ 这个函数根据URL和查询搜索页面 参数: url = 要解析数据的主要网站 query = 要搜索的产品/词 返回:如果找到页面则返回页面,否则返回错误 """ path = url + query +"&page=" + str(page_no) page = requests.get(path, headers =header) if page.status_code == 200: return page.content else: return "Error"

获取产品详细信息。下一步是为每个产品创建URL并访问该URL,抓取页面上所有必要的详细信息。为此,使用selenium自动化提取细节的过程。对于amazon.in,每个产品的URL可以分解为

"https://www.amazon.in/dp/"+asin

然后创建一个函数,使用ASIN号码访问每个URL,并获取每个产品的评论、评分、名称。然后使用Python中的CSV模块将这些值存储为CSV文件。

预处理和探索性数据分析

使用pandas库加载保存的CSV文件,并进行一些EDA,如评分分布、评论中的字数统计以及哪些词在正面评论和负面评论中占主导地位,然后进行预处理,如清理评论和标题等。

数据集中正面和负面评分的分布。上述图表显示了正面和负面评论中字数的分布。可以看到,正面评论中的字数频率大于负面评论,并且负面评论通常比正面评论更短

正面评论。可能无法从这个较小的数据集中得出太多结论,但可以注意到,“好”这个词在正面评论中占主导地位。

负面评论。在上述词云中,“不要,买,电话”是占主导地位的词。

字数统计。对于负面评论的字数统计,可以清楚地看到一个正态分布图,但对于正面评论,没有明显的模式。

使用Textblob进行细粒度情感分析

from textblob import TextBlob def textblob_score(sentence): return TextBlob(sentence).sentiment.polarity
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485