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