python淘寶評論
⑴ python SnowNLP情感分析實踐與優化總結
由於語料缺乏,前期若使用到情感分析,建議暫時使用SnowNLP(此模塊主要使用淘寶評論語料)做情感挖掘,但不僅僅為單純調用,需要優化,下面是一些實踐思考:
可在此基礎上優化,比如文本需要特別處理,除了平常的去停用詞外,還可以需要對輸入的文本結合詞性等進行處理。
下面是一些常識:
一)無情感的詞語(如去停用詞,去掉語氣詞,無詞性標簽的詞語)
二)對於文本過長,則可以考慮提取關鍵詞或抽取文本摘要後再提取關鍵詞
對於後者實踐結果差異明顯:
以"發布了頭條文章: 《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯 "為例子, 顯然該文本為「積極****」文本。
1)s = SnowNLP("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")
得分為0.5,明顯不符合
2)s = SnowNLP(「 」.join(jieba.analyse.textrank("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")))
而對於文本特別長的,則可以先抽取摘要,再對摘要提取關鍵詞。
這主要由於此SnowNLP主要用貝葉斯機器學習方法進行訓練文本,機器學習在語料覆蓋上不夠,特徵上工程處理不當會減分,也沒考慮語義等。
為何要考慮語義層面:
以「 蘇寧易購,是誰給你們下架OV的勇氣****」 中的「 下架」其實才是中心詞(為表達憤怒的文本),但「 勇氣 」為下架的賓語(其為積極的文本),此句應該結果小於0.5,但實際為0.88,去掉「蘇寧易購」則為0.6>
⑵ 怎樣用python抓取淘寶評論
#coding=utf-8
importurllib2
importsys
importjson
importre
#設置系統默認編碼為utf-8
reload(sys)
sys.setdefaultencoding("utf-8")
#Onlyforpython2
'''
只是簡單的示例,沒有檢查無評論的情況,其它異常也可能沒有檢查,
你可以根據自己的需要再對代碼修改
'''
#解析網頁數據
defparseData(html_data,reg_str):
pattern=re.compile(reg_str)
result=re.search(pattern,html_data)
ifresult:
returnresult.groups()
#commodity_url為商品詳情頁面
commodity_url="http://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9140345655.2.y3LCj0&id=44454286657"
html_data=urllib2.urlopen(commodity_url).read()
#獲取用戶ID和商品ID
auction_msg=parseData(html_data,r'userNumId=(.*?)&auctionNumId=(.*?)&')
ifnotauction_msg:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()
reviews_url="http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list¤tPageNum=1&rateType=&orderType=sort_weight&userNumId=%s&auctionNumId=%s"%auction_msg
response=urllib2.urlopen(reviews_url)
reviews_data=response.read().decode("gbk")
#獲取評論數據
json_str=parseData(reviews_data,r'((.*))')[0]
ifnotjson_str:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()
jdata=json.loads(json_str)
#下面只列印了第一條評論,如需要列印所有,則遍歷jdata["comments"]即可
printjdata["comments"][0]["content"]