摘要:對豆瓣電影評論的情感分析,可以幫助后續(xù)電影票房的預(yù)測。調(diào)用百度情感分析API,將按照電影上映時間劃分,計算出每個時間段內(nèi)的觀眾的情感趨勢。
關(guān)鍵詞:電影評論;情感分析;百度API
中圖分類號:TP391.1 文獻標(biāo)識碼:A
1 引言
電影評論反映了觀眾對影片的認同程度,在電影消費行為上起著決定性的指導(dǎo)作用,它可以給未觀影者提供一種情感的導(dǎo)向參考,也給電影制作及發(fā)行方提供了參考方向,對電影票房產(chǎn)生了各種各樣的影響[1,2]。
首先需要從豆瓣網(wǎng)爬取每個電影評論的相關(guān)信息[3],每個電影評論大概是200條。再通過調(diào)用百度情感文本分析API對每條評論進行分析,通過調(diào)用會返回相關(guān)的JSON格式字符串。通過對字符串內(nèi)容的分析得出每部電影在上映前用戶、上映7天內(nèi)以及上映7天后評論的情感趨勢。這里的情感趨勢指的是評論文字所持態(tài)度的可能性。例如1代表的積極,0.5代表中性,0代表消極。在0-1之間的數(shù)就代表了相關(guān)程度。例如0.9代表很積極,0.75代表一般積極,0.1代表消極。
2 調(diào)用百度API
2.1 百度API介紹
對只包含單一主體主觀信息的文本,進行自動情感傾向性判斷(積極、消極、中性),并給出相應(yīng)的置信度。為口碑分析、話題監(jiān)控、輿情分析等應(yīng)用提供基礎(chǔ)技術(shù)支持,同時支持用戶自行定制模型效果調(diào)優(yōu)。
2.2 安裝API Python SDK
對于一般的請求來說,需要通過URL進行手動請求。但是,此處使用的是Python語言。百度對Python語言的請求接口做了封裝,因此只需對SDK進行pip下載即可使用內(nèi)置包。如果已安裝pip,執(zhí)行pip install baidu-aip即可,如果需要使用HTTP2,請安裝pip install baidu-aip-http2。如果已安裝setuptools,執(zhí)行python setup.py install即可。
2.3 新建AipNlp
AipNlp是百度大腦自然語言處理的Python SDK客戶端,為使用自然語言處理的開發(fā)人員提供了一系列的交互方法。編寫如下代碼,可新建一個AipNlp。
""" 你的 APPID AK SK """
APP_ID = '18884915'
API_KEY = 'Bm4P8py3wcPkGFCuK0aDsO16'
SECRET_KEY = 'GIIBgETUXcKXF2gosswUHa4hV5W1auYu'
def getAPI():
client = AipNlp(APP_ID,API_KEY,SECRET_KEY)
return client
在上面代碼中,常量APP_ID在百度云控制臺中創(chuàng)建,常量API_KEY與SECRET_KEY是在創(chuàng)建完畢應(yīng)用后,系統(tǒng)分配給用戶的,均為字符串,用于標(biāo)識用戶,為訪問做簽名驗證,可在AI服務(wù)控制臺中的應(yīng)用列表中查看。
情感分析API對包含主觀觀點信息的文本進行情感極性類別(積極、消極、中性)的判斷,并給出相應(yīng)的置信度。調(diào)用百度情感傾向分析API的代碼如下:
client = BaiDuCutWord.getAPI()
調(diào)用API進行分析如下:
res = client.sentimentClassify(text);
其中text是請求參數(shù),為String類型文本內(nèi)容(GBK編碼)。
把分析數(shù)據(jù)保存如下:
SingleItem['emotions']= res
3 對返回參數(shù)分析
3.1數(shù)據(jù)類型轉(zhuǎn)換
將數(shù)據(jù)從數(shù)據(jù)庫中以DataFrame形式加載至內(nèi)存以便后續(xù)分析。由于原始數(shù)據(jù)的時間是字符串形式,為了方便后續(xù)使用DataFrame的query查詢,需要做前期準(zhǔn)備,將字符串類型轉(zhuǎn)換成datatime64[ns]類型。利用datetime的timedelta對時間進行操作,計算出所需的時間,并合并成新的DataFrame。
3.2 情感分析
在數(shù)據(jù)類型轉(zhuǎn)換完畢后,將按照影片上映前、上映7天內(nèi)以及上映7天后進行時間劃分,并計算出每個時間段內(nèi)的觀眾的情感趨勢。對影片上映前分析代碼如下:
beforeReleaseComments = df.query('commentTime<releaseTime')
beforeRelease = beforeReleaseComments.groupby(by="movieUniqueId").mean()['positive_prob']
對影片上映7天內(nèi)分析代碼如下:
in7Comments = ddff.query('commentTime<=release7Time')
in7= in7Comments.groupby(by="movieUniqueId").mean()['positive_prob']
對影片上映7天后分析代碼如下:
after7Comments = ddff.query('commentTime>release7Time')
after7 = after7Comments.groupby(by="movieUniqueId").mean()['positive_prob']
最后將分析的數(shù)據(jù),按照電影名稱進行分類并存儲備用,以便后續(xù)預(yù)測所需。
參考文獻:
[1]羅捷.基于電影評價的進口影片票房預(yù)測研究[D].重慶:重慶大學(xué),2015.
[2]張紅,張海悅,王萃.基于文本情感分析的類型電影受眾特征與偏好研究[J].現(xiàn)代電影技術(shù).2019,(11).
[3]孟梅.基于BERT-TextCNN-B的電影評論情感分析[D].上海:上海師范大學(xué),2021.
基金項目:校級教學(xué)研究項目(2020Y03)
作者簡介:羅旋(1983-),女,湖北武漢人,講師,碩士,主要研究方向為大數(shù)據(jù)技術(shù)、軟件工程。