智能手机评论的细腻情感分析
情感分析或观点挖掘是使用自然语言处理和
机器学习对单词背后的情感进行的分析。随着一切在线变化,品牌和企业对客户的评价至为重要,并且由于这种情感分析,在过去的10年中一直是活跃的研究领域。企业正在进行大量投资以提供有效的情绪分类器。
为什么要进行细粒度的情感分析?
在探索我大多发现寿小号其使用所面对自己的二元分类(只是正面和负面情绪),一个很好的理由?分类是细粒度分类有点更具挑战性,也有不适用于此许多资源。
情绪分析
资源
对细节的关注使平均和惊人之间有所不同。如果需要更精确的结果,则可以使用细粒度分析。简而言之,您不仅可以确定谁在谈论某个产品,还可以确定他们的反馈中到底在谈论什么。例如,对于比较表达式“ Scam 1992比Mirzapur 2更好”。—与常规的二进制情感分类器相比,细粒度的情感分析可以提供更精确的信息。除了上述优势外,“地理位置”这样的双极性评论确实很差……但是那里的人却光荣。”会混淆提供错误预测的二进制情感分类器。
我认为上述优势将为进行细粒度的情绪分析提供足够的动力。
如何进行细粒度的情绪分析:方法和工具
数据收集和准备。为了收集数据,我们使用python,selenium和beautifulsoup库从Amazon刮取了前100名智能手机评论。如果您不知道如何使用python和beautifulsoup并请求用于网络抓取的库,那么这里是一个快速教程。Selenium Python绑定提供了一个简单的API,可以使用Selenium WebDriver编写功能/验收测试。
现在开始编码!!
汇入要求
从fake_useragent导入UserAgent
导入csv
汇入
从硒导入webdriver
从bs4导入selenium导入webdriver的BeautifulSoup
我们首先导入一些库。请求库用于将请求发送到URL并接收网页的内容。BeautifulSoup用于以更具可读性的格式来格式化网页的内容。selenium用于自动化没有硒的网页抓取过程,您必须发送标头和cookie,我发现该过程更加繁琐。
搜索产品并获取ASIN(亚马逊标准标识号)
现在,我们将基于搜索到的查询创建帮助函数,以获取所有产品的ASIN编号。这些ASIN号将有助于我们稍后创建每个产品的URL。我们创建了两个函数search()和asin(),用于搜索网页并将所有ASIN号存储在列表中。我们发现,当我们在亚马逊上搜索特定产品时。然后将其网址分为三部分。
“
https://www.amazon.in/s?k= ” +搜索查询+页码。因此,我们搜索了一部智能手机,直到7页,您可以根据需要将其扩展到任意数量的页面。
def搜索(URL,查询,page_no):
“”
此功能可根据url和查询来搜索页面
参数:
url =要从中解析数据的主站点
查询=要搜索的产品/词
返回:页面(如果找到),否则返回错误
“”
路径=网址+查询+“&page =” + str(page_no)
页面= request.get(路径,标头=标头)
如果page.status_code == 200:
返回page.content
其他:
返回“错误”的定义为(url,query,page_no):
“”
获取ASIN(产品的阿姆松标准识别号)
参数:
url =需要从中删除asin的主URL
查询=要从中刮除asins的产品类别
返回:产品的asins列表
“”
product_asin = []
响应=搜索(url,query,page_no)
汤= BeautifulSoup(response,'html.parser')
对于汤中的i,find_all(“ div”,{“ class”:“ sg-col-20-of-24 s-结果项s-asin sg-col-0-of-12 sg-col-28-of -32 sg-col-16-of-20 sg-col sg-col-32-of-36 sg-col-12-of-16 sg-col-24-of-28“}):
product_asin.append(i ['data-asin'])
返回product_asin
获取产品详细信息
现在,下一步是为每个产品创建一个URL,然后转到该URL并抓取该页面所需的所有必要详细信息。为此,我们使用硒来自动化提取细节的过程。对于亚马逊。每个产品的网址中的内容可以细分为
“
https://www.amazon.in/dp/ ” + asin
然后,我们创建了一个函数,以转到使用asin数字创建的每个URL,并获取每个产品的评论,评分和名称。然后,我们使用python中的CSV模块将这些值存储为CSV文件。
预处理和探索性
数据分析。
使用pandas库和一些EDA(如评分分布,评论中的单词计数以及在正面评论和负面评论中占主导地位的单词)加载保存的CSV文件,然后进行预处理(例如,评论和标题的清除等)。
情绪分析正负分数在数据集中的分布。
图片发布
上图显示了正面和负面评论中单词数量的分布。我们可以看到,正面评论中的单词数量频率比负面评论中的单词频率高,而且负面评论通常比正面评论中的短。
图片发布好评
我们可能无法从中获得太多收益,也许是因为数据集较小,但是我们可以注意到,可以为肯定的“好”一词是积极评论中的主导词之一。
图片发布负面评论
在上述词云中,“不要,买,打电话”是这里的主要词。
图片发布字数
对于负字数,可以清晰地看到正态分布图,但是对于积极的评论,则没有清晰的图案。
Textblob用于细粒度的情绪分析:
TextBlob是用于自然语言处理(NLP)的python库。TextBlob积极使用自然语言工具包(NLTK)来完成其任务。NLTK是一个库,可以轻松访问许多词汇资源,并允许用户处理分类,分类和许多其他任务。TextBlob是一个简单的库,支持对文本数据进行复杂的分析和操作。
我们将创建一个返回情感极性得分的函数,然后使用该函数从1-5预测情感得分。
从textblob导入TextBlob
def textblob_score(句子):
返回TextBlob(sentence).sentiment.polarity
将每个评论传递给上述函数,并将返回的分数存储并保存到数据框中。
题库