R語言NLP案例:LDA主題文本挖掘優(yōu)惠券推薦網(wǎng)站數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=12203
?
介紹
Groupon是一個(gè)優(yōu)惠券推薦服務(wù),您可以免費(fèi)注冊(cè)Groupon,并且Groupon每天都會(huì)向您發(fā)送包含該地區(qū)當(dāng)天交易的電子郵件。如果您喜歡這筆交易,那么您可以立即從Groupon購買,并在餐館/商店兌換。
數(shù)據(jù)
這些數(shù)據(jù)是從Groupon網(wǎng)站的紐約市區(qū)域獲得的。網(wǎng)站外觀如下所示:
?
?

兩個(gè)頁面的布局都不是動(dòng)態(tài)的,所以建立了一個(gè)自定義scrapy,以便快速瀏覽所有的頁面并檢索要分析的信息。然而,評(píng)論,重要的信息,通過Java呈現(xiàn)和加載,因此硒是使用的腳本。Selenium腳本使用從scrapy獲取的groupons的URL,實(shí)質(zhì)上模仿了人類點(diǎn)擊用戶注釋部分中的“next”按鈕。
從每個(gè)組中檢索的數(shù)據(jù)如下所示。
Groupon標(biāo)題
分類信息
交易位置
總評(píng)分?jǐn)?shù)
作者日期
評(píng)論網(wǎng)址
?
for url in url_list.url[0:50]:
try:
driver.get(url)
time.sleep(2)
#關(guān)閉出現(xiàn)的任何彈出窗口s#
# if(driver.switch_to_alert()):
try:
close = driver.find_element_by_xpath('//a[@id="nothx"]')
close.click()
except:
pass
time.sleep(1)
try:
link = driver.find_element_by_xpath('//div[@id="all-tips-link"]')
driver.execute_script("arguments[0].click();", link)
time.sleep(2)
except:
next
i = 1
print(url)
while True:
try:
time.sleep(2)
print("Scraping Page: " + str(i))
reviews = driver.find_elements_by_xpath('//div[@class="tip-item classic-tip"]')
next_bt = driver.find_element_by_link_text('Next')
for review in reviews[3:]:
review_dict = {}
content = review.find_element_by_xpath('.//div[@class="twelve columns tip-text ugc-ellipsisable-tip ellipsis"]').text
author = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="tips-reviewer-name"]').text
date = review.find_element_by_xpath('.//div[@class="user-text"]/span[@class="reviewer-reviewed-date"]').text
review_dict['author'] = author
review_dict['date'] = date
review_dict['content'] = content
review_dict['url'] = url
writer.writerow(review_dict.values())
i += 1
next_bt.click()
except:
break
except:
next
csv_file.close()
driver.close()
探索性數(shù)據(jù)分析
一個(gè)有趣的發(fā)現(xiàn)是在過去的幾年里,群體的使用已經(jīng)大大增加了。我們通過檢查評(píng)論提供的日期來發(fā)現(xiàn)這一點(diǎn)。看下面的圖像,其中x軸表示月/年和y軸,表示計(jì)數(shù),這個(gè)結(jié)論變得明顯。最后的小幅下滑是由于當(dāng)時(shí)的一些小組可能是季節(jié)性的。

一個(gè)有趣的發(fā)現(xiàn)是在過去的幾年里,群體的使用已經(jīng)大大增加了。我們通過檢查評(píng)論提供的日期來發(fā)現(xiàn)這一點(diǎn)??聪旅娴膱D像,其中x軸表示月/年和y軸,表示計(jì)數(shù),這個(gè)結(jié)論變得明顯。最后的小幅下滑是由于當(dāng)時(shí)的一些小組可能是季節(jié)性的。
pie_chart_df = Groupons.groupby('categories').agg('count')
plt.rcParams['figure.figsize'] = (8,8)
sizes = list(pie_chart_df.mini_info)
labels = pie_chart_df.index
plt.pie(sizes, shadow=True, labels = labels, autopct='%1.1f%%', startangle=140)
# plt.legend(labels, loc="best")
plt.axis('equal')

最后,導(dǎo)出了一個(gè)正則表達(dá)式來解析價(jià)格信息,以及它們提供的交易數(shù)量。該信息顯示在以下條形圖中:

最后,利用用戶評(píng)論數(shù)據(jù)生成一個(gè)文字云:

主題建模
創(chuàng)建一個(gè)語料庫的第一步是刪除所有停用詞。最后創(chuàng)造trigrams。
選擇的模型是Latent Dirichlet Allocation,因?yàn)樗軌騾^(qū)分來自不同文檔的主題,并且存在一個(gè)可以清晰有效地將結(jié)果可視化的包。由于該方法是無監(jiān)督的,因此必須事先選擇主題數(shù)量,在模型的25次連續(xù)迭代中最優(yōu)數(shù)目為3。結(jié)果如下:
?


上面的可視化是將主題投影到兩個(gè)組件上,其中相似的主題會(huì)更接近,而不相似的主題會(huì)更遠(yuǎn)。右邊的單詞是組成每個(gè)主題的單詞,
?
結(jié)論
主題建模是無監(jiān)督學(xué)習(xí)的一種形式,這個(gè)項(xiàng)目的范圍是在基礎(chǔ)詞語背后發(fā)現(xiàn)模型。

最受歡迎的見解
1.小紅書用戶行為數(shù)據(jù)采集洞察:婚禮種草指南
2.機(jī)器學(xué)習(xí)助推快時(shí)尚精準(zhǔn)銷售預(yù)測(cè)
3.虎撲社區(qū)論壇數(shù)據(jù)爬蟲分析報(bào)告
4.用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況—隱馬爾科夫模型(HMM)的應(yīng)用
5.數(shù)據(jù)盤點(diǎn):家電線上消費(fèi)新趨勢(shì)
6.電商網(wǎng)站爬蟲
7.python爬蟲進(jìn)行Web抓取LDA主題語義數(shù)據(jù)分析
8.把握出租車行駛的數(shù)據(jù)脈搏
9.智能門鎖“剁手”數(shù)據(jù)攻略