欢迎光临散文网 会员登陆 & 注册

R语言NLP案例:LDA主题文本挖掘优惠券推荐网站数据

2021-02-20 21:58 作者:拓端tecdat  | 我要投稿

原文链接:http://tecdat.cn/?p=12203

 

介绍

Groupon是一个优惠券推荐服务,您可以免费注册Groupon,并且Groupon每天都会向您发送包含该地区当天交易的电子邮件。如果您喜欢这笔交易,那么您可以立即从Groupon购买,并在餐馆/商店兑换。

数据

这些数据是从Groupon网站的纽约市区域获得的。网站外观如下所示:

 

 

两个页面的布局都不是动态的,所以建立了一个自定义scrapy,以便快速浏览所有的页面并检索要分析的信息。然而,评论,重要的信息,通过Java呈现和加载,因此硒是使用的脚本。Selenium脚本使用从scrapy获取的groupons的URL,实质上模仿了人类点击用户注释部分中的“next”按钮。

从每个组中检索的数据如下所示。

Groupon标题

分类信息

交易位置

总评分数

作者日期

评论网址

 

  1. for url in url_list.url[0:50]:

  2. try:

  3. driver.get(url)

  4. time.sleep(2)

  5. #关闭出现的任何弹出窗口s#

  6. # if(driver.switch_to_alert()):

  7. try:

  8. close = driver.find_element_by_xpath('//a[@id="nothx"]')

  9. close.click()

  10. except:

  11. pass

  12. time.sleep(1)

  13. try:

  14. link = driver.find_element_by_xpath('//div[@id="all-tips-link"]')

  15. driver.execute_script("arguments[0].click();", link)

  16. time.sleep(2)

  17. except:

  18. next

  19. i = 1

  20. print(url)

  21. while True:

  22. try:

  23. time.sleep(2)

  24. print("Scraping Page: " + str(i))

  25. reviews = driver.find_elements_by_xpath('//div[@class="tip-item classic-tip"]')

  26. next_bt = driver.find_element_by_link_text('Next')

  27. for review in reviews[3:]:

  28. review_dict = {}

  29. content = review.find_element_by_xpath('.//div[@class="twelve columns tip-text ugc-ellipsisable-tip ellipsis"]').text

  30. author = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="tips-reviewer-name"]').text

  31. date = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="reviewer-reviewed-date"]').text

  32. review_dict['author'] = author

  33. review_dict['date'] = date

  34. review_dict['content'] = content

  35. review_dict['url'] = url

  36. writer.writerow(review_dict.values())

  37. i += 1

  38. next_bt.click()

  39. except:

  40. break

  41. except:

  42. next

  43. csv_file.close()

  44. driver.close()

探索性数据分析

一个有趣的发现是在过去的几年里,群体的使用已经大大增加了。我们通过检查评论提供的日期来发现这一点。看下面的图像,其中x轴表示月/年和y轴,表示计数,这个结论变得明显。最后的小幅下滑是由于当时的一些小组可能是季节性的。

一个有趣的发现是在过去的几年里,群体的使用已经大大增加了。我们通过检查评论提供的日期来发现这一点。看下面的图像,其中x轴表示月/年和y轴,表示计数,这个结论变得明显。最后的小幅下滑是由于当时的一些小组可能是季节性的。

  1. pie_chart_df = Groupons.groupby('categories').agg('count')

  2. plt.rcParams['figure.figsize'] = (8,8)

  3. sizes = list(pie_chart_df.mini_info)

  4. labels = pie_chart_df.index

  5. plt.pie(sizes, shadow=True, labels = labels, autopct='%1.1f%%', startangle=140)

  6. # plt.legend(labels, loc="best")

  7. plt.axis('equal')

最后,导出了一个正则表达式来解析价格信息,以及它们提供的交易数量。该信息显示在以下条形图中:

最后,利用用户评论数据生成一个文字云:

主题建模

创建一个语料库的第一步是删除所有停用词。最后创造trigrams。

选择的模型是Latent Dirichlet Allocation,因为它能够区分来自不同文档的主题,并且存在一个可以清晰有效地将结果可视化的包。由于该方法是无监督的,因此必须事先选择主题数量,在模型的25次连续迭代中最优数目为3。结果如下:

 

上面的可视化是将主题投影到两个组件上,其中相似的主题会更接近,而不相似的主题会更远。右边的单词是组成每个主题的单词,

 

结论

主题建模是无监督学习的一种形式,这个项目的范围是在基础词语背后发现模型。

最受欢迎的见解

1.小红书用户行为数据采集洞察:婚礼种草指南

2.机器学习助推快时尚精准销售预测

3.虎扑社区论坛数据爬虫分析报告

4.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

5.数据盘点:家电线上消费新趋势

6.电商网站爬虫

7.python爬虫进行Web抓取LDA主题语义数据分析

8.把握出租车行驶的数据脉搏

9.智能门锁“剁手”数据攻略


R语言NLP案例:LDA主题文本挖掘优惠券推荐网站数据的评论 (共 条)

分享到微博请遵守国家法律