版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于情感詞典的微博評論情感分析理工學院計科一、實驗題目基于微博評論的情感分析二、實驗目的用Java實現(xiàn)對微博評論數(shù)據(jù)的分詞和情感分析。得到評論的情感傾向是積極、消極還是中性以及情感傾向度。以此作為算法研究微博評論的基礎(chǔ)。三、實驗環(huán)境操作系統(tǒng)版本:WINDOWS7主要硬件:CPU,內(nèi)存,顯示器實驗平臺:JavaEclipse四、實驗步驟Java環(huán)境配置先安裝jdk選擇【新建系統(tǒng)變量】--彈出“新建系統(tǒng)變量”對話框,在“變量名”文本框輸入“JAVA_HOME”,在“變量值”文本框輸入JDK的安裝路徑在“系統(tǒng)變量”選項區(qū)域中查看CLASSPATH變量在文本框起始位置添加“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。在“系統(tǒng)變量”選項區(qū)域中查看PATH變量,在文本框起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”2、驗證環(huán)境變量是否配置成功:如果出現(xiàn)下面界面說明你已經(jīng)配置好了!你的電腦就可以運行java程序了。3、導入目的文件點擊finish導入完成,可運行程序。功能和代碼實現(xiàn)功能實現(xiàn):算法分為四個方面來實現(xiàn),爬蟲獲取微博評論、分詞、情感定位和情感聚合。通過算法可以實現(xiàn)對于微博評論的分詞和人們的情感傾向分析。是積極消極還是中性的態(tài)度以及情感的傾向度。中文分詞和去除停用詞中文分詞和去除停用詞測試文件測試文件得到情感傾向度情感定位得到情感傾向度情感定位微博評論爬蟲微博評論爬蟲情感聚合情感聚合項目模塊設(shè)計代碼實現(xiàn):本人在項目組中負責情感定位的部分和代碼,本部分代碼的主要功能是給不同情感詞進行人工標記。具體代碼如下: publicclasssentiment{ Set<String>posWordSet,negWordSet,negVodSet,vod1Set,vod2Set,vod3Set,vod4Set,vod5Set,vod6Set;//不同情感詞的詞庫 StringBuffersensTxt; floattolSens=0;//各個極性短語的強度 floatdocSens=0;//句子平均的強度, inti=1; intw=1; intq=1; publicstaticvoidmain(String[]args)throwsException{ fengCijd=newfengCi("./DATA/tt.txt","./DATA/ttFC.txt","UTF8"); jd.getFengci(); //開始sentiment sentimenta=newsentiment(); a.readDoc("./DATA/ttFC.txt","./DATA/ttPrediction.txt"); } publicvoidreadDoc(Stringpath,StringsenPath)throwsIOException{ Filedoc=newFile(path); StringsigleDoc=null; String[]stringList; dic(); StringBufferreadParse,ParseSen;BufferedReaderdocBf=newBufferedReader(newInputStreamReader(newFileInputStream(doc),"gb2312")); while((sigleDoc=docBf.readLine())!=null){ readParse=newStringBuffer(); ParseSen=newStringBuffer(); readParse.append("<");//后加< ParseSen.append("<"); stringList=sigleDoc.split("");//分隔符 for(inti=0;i<stringList.length;i++){ System.out.print(stringList[i]+"");if(posWordSet.contains(stringList[i])||negWordSet.contains(stringList[i])||negVodSet.contains(stringList[i])||vod1Set.contains(stringList[i])||vod2Set.contains(stringList[i])||vod3Set.contains(stringList[i])||vod4Set.contains(stringList[i])||vod5Set.contains(stringList[i])||vod6Set.contains(stringList[i])){if(readParse.lastIndexOf(">")>readParse.lastIndexOf("<")){//輸出>的位置,從0開始readParse.append("<");}if(ParseSen.lastIndexOf(">")>ParseSen.lastIndexOf("<")){ParseSen.append("<");}if(negVodSet.contains(stringList[i])){System.out.print("NA");readParse.append("NA");ParseSen.append("-0.8,");} //負面詞賦值-0.8if(vod1Set.contains(stringList[i])){ System.out.print("DA");readParse.append("DA");ParseSen.append("0.9,");}if(vod2Set.contains(stringList[i])){System.out.print("DA");readParse.append("DA");ParseSen.append("0.9,"); } if(vod3Set.contains(stringList[i])){ System.out.print("DA");readParse.append("DA");ParseSen.append("0.7,");}if(vod4Set.contains(stringList[i])){ System.out.print("DA");readParse.append("DA");ParseSen.append("0.5,");}if(vod5Set.contains(stringList[i])){ System.out.print("DA");readParse.append("DA");ParseSen.append("0.3,");}if(vod6Set.contains(stringList[i])){ System.out.print("DA");readParse.append("DA");ParseSen.append("-0.5,");}if(posWordSet.contains(stringList[i])){System.out.print("PW");readParse.append("PW>");ParseSen.append("0.8>");}if(negWordSet.contains(stringList[i])){System.out.print("PW");readParse.append("PW>");ParseSen.append("-0.8>");}}}System.out.print("\r\n");System.out.println(readParse.toString()+""+ParseSen.toString());//判斷標簽computeSen(readParse.toString(),ParseSen.toString(),senPath);}docBf.close();}//構(gòu)建詞典publicvoiddic()throwsIOException{ BufferedReaderposWord=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/正面詞/正面詞(0.8).txt"))); BufferedReadernegWord=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/負面詞/負面詞(-0.8).txt"))); BufferedReadernegVod=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/否定副詞/否定(-0.8).txt"))); BufferedReadervod1=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/最(0.9).txt"))); BufferedReadervod2=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/超(0.9).txt"))); BufferedReadervod3=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/很(0.7).txt"))); BufferedReadervod4=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/較(0.5).txt"))); BufferedReadervod5=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/稍(0.3).txt"))); BufferedReadervod6=newBufferedReader(newFileReader(newFile("./DATA/構(gòu)建詞典/程度詞語/欠(-0.5).txt")));情感定位:首先先將微博評論中不是情感詞的詞語用停用詞詞典去除掉,只剩下能表達情感及情感強度的詞語,然后將每一個情感詞語與各個詞庫進行匹配及標記賦值。例如:今天天氣很好但空氣質(zhì)量欠佳。我們將分好詞中的很、欠作為程度副詞提取出來,并將他們進行人工標記賦值很為0.7,欠為-0.5;好、佳作為正面詞提取出來,并將他們進行人工賦值,因為好、佳都是正面詞,所以均為0.8。然后再通過情感聚合算出每一條評論的情感強度即可。我們主要分為了程度副詞、否定副詞、負面詞、正面詞,并將他們進行不同程度的賦值,程度副詞分別為0.9、0.7、0.5、0.3、-0.5;否定副詞為-0.8;負面詞為-0.8;正面詞為0.8,每一個評論中無論情感詞有多少重復出現(xiàn)都要進行累加,從而計算出整個評論的情感傾向。六、實驗結(jié)果分析實驗所使用的語料是用爬蟲代碼在微博評論上爬下來的。格式按照程序要求已規(guī)范格式可以直接使用為txt文本的形式。運行sentiment程序,我們把用爬蟲爬下來的微博評論txt文本放到ff.txt中,運行后得到結(jié)果存入ffFC.txt和ffPrediction.txt中。ffFC.txt中存入的是分詞結(jié)果分詞結(jié)果用空格鍵區(qū)分,每條評論用回車鍵作為結(jié)束,ffPrediction.txt中存入的是對于評論情感傾向的判斷分為pos、neg和neutral三個詞性。通過對于每條微博評論情感傾向的判斷,我們做一個匯總,可以得到公眾對于某個社會事件的態(tài)度傾向分布。是積極的、消極的還是中性的以及情感傾向度。通過更多的測試,可以幫助個人了解人們對某些商品的觀點和態(tài)度,從而選購合適的商品;可以幫助商家搜集市場情報,從而制定恰當?shù)漠a(chǎn)品營銷策略:尤其可以幫助政府機構(gòu)了解一定時期人們對某些話題的觀點和態(tài)度,從而掌握并引導網(wǎng)絡(luò)輿情。從而體現(xiàn)了我們這個課題研究的目的。七、遇到的問題我們項目進行時出現(xiàn)的問題實現(xiàn)工具的選擇,開始我們選擇了C++作為實現(xiàn)平臺,但是在實際操作過程中遇到很多解決不了的問題,我們后來又選擇了不太熟悉,但是網(wǎng)絡(luò)上教學資源相對豐富的java作為實現(xiàn)平臺,最終順利實現(xiàn)了一些功能。文件流寫出的分詞文件亂碼的問題。解決方法:分詞后的文件出現(xiàn)亂碼主要是因為原文件與分詞保存的文件格式不一樣導致的問題。例如我們原來在微博上爬取得評論是以ANSI格式保存的,但是分詞文件的存放格式是UTF-8格式。解決方法非常簡單,只要將他們兩的文件的保存格式改為一樣的就不會出現(xiàn)此問題了。3、評論文件太大導致報錯。解決方法:打開eclipse存放的文件夾,用記事本打開eclipse.ini文件,將openFile--launcher.XXMaxPermSize下的打開文件大小改成大于你的測試用的txt文件的大小。老師對我們提出的問題關(guān)于系統(tǒng)準確度和針對微博評論的效果為了提高我們微博話題情感的分析的準確度,我們在設(shè)法將字典做成可經(jīng)過測試,動態(tài)添加新的情感詞的動態(tài)詞典。遇到了一些困難:首先就是我們無法判定一個新分出來的詞是否是情感詞以及它為情感詞的判斷標準。第二就是我們無法判定它的情感傾向。基于這個問題上我們又設(shè)想是否可以建立我們研究的話題的專門的專業(yè)性的字典,如手機評論中出現(xiàn)的內(nèi)存、顆粒度、像素等專業(yè)詞匯,來提高我們的分詞準確性。但是由于微博話題的廣泛性,并且專業(yè)領(lǐng)域詞匯的字典在網(wǎng)絡(luò)上非常難直接獲得,而且獲得的專業(yè)詞匯表的專業(yè)詞匯并不完整,使得這個問題無法得到充分解決。這也是我們今后工作的發(fā)展和研究方向。(三)其他小組向我們小組提出的問題問題1:中科院分詞與IKAnalyzer分詞相比為什么選取了IKAnalyzer分詞?答案:NLPIR分詞系統(tǒng)是我們小組剛開始使用的分詞系統(tǒng),但是在分詞過程中我們發(fā)現(xiàn)其分詞的結(jié)果文件中標明了詞語的詞性,使得情感詞的提取變得困難,同時容易在中文間隔,返回局部亂碼方面出錯。相比起NLPIR,IKAnalyzer是基于java語言開發(fā)的輕量級的中文分詞工具包
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古代英雄故事解讀
- 無人駕駛汽車產(chǎn)業(yè)鏈整合協(xié)議書
- 水泥制品行業(yè)智能制造與質(zhì)量控制方案
- 聲律啟蒙觀后感
- 多平臺營銷策略合作協(xié)議
- 金融行業(yè)智能投顧系統(tǒng)方案
- 個性化教育服務(wù)在線平臺實施方案
- 熱水器除垢施工方案
- 游戲內(nèi)容制作及更新委托書
- 大連育明高一數(shù)學試卷
- 散狀料上料安全操作規(guī)程模版(3篇)
- 2025戶外品牌探路者線上新媒體運營方案
- 《個案工作介入涉罪未成年人的家庭幫教研究》
- 2024年中學總務(wù)處工作總結(jié)
- 統(tǒng)編版(2024新版)七年級上冊道德與法治期末綜合測試卷(含答案)
- 文化創(chuàng)意合作戰(zhàn)略協(xié)議
- 國家開放大學法學本科《商法》歷年期末考試試題及答案題庫
- 2023年黑龍江日報報業(yè)集團招聘工作人員考試真題
- 安全管理人員安全培訓教材
- 2024年婦保科工作總結(jié)及計劃
- 北京理工大學《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計》2022-2023學年第一學期期末試卷
評論
0/150
提交評論