99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀大數(shù)據(jù)輿情情感分析,如何提取情感并使用什么樣的工具?
大數(shù)據(jù)輿情情感分析,如何提取情感并使用什么樣的工具?
2017-03-28
收藏


各類 paper 是有一定的借鑒意義的,不過這主要是學(xué)術(shù)界在單個問題上的細(xì)化,要真正從研究領(lǐng)域落地到大數(shù)據(jù)的處理還有很多工作要做。


一、工程上的處理流程

工程上的處理流程具體包括以下幾個方面:

1、情感分析任務(wù)的界定
在進行情感分析任務(wù)的界定時,要弄清楚工程的需求到底是什么;要分析文本的哪個層面上的情感,比如篇章、段落、句子、短語、詞等粒度;是不是要分析所有的文本還是分析其中的部分文本;準(zhǔn)許的錯誤誤差是在個什么范圍內(nèi)等。

2、情感分析標(biāo)準(zhǔn)的制定
在實際的企業(yè)應(yīng)用中往往要根據(jù)行業(yè)的特點來制定一些情感分析的標(biāo)準(zhǔn),甚至要從客戶的立場中去建立標(biāo)準(zhǔn)。根據(jù)國雙實際接觸客戶的經(jīng)驗,在行業(yè)上建立標(biāo)準(zhǔn)后,還需要再具體跟客戶做一些適度調(diào)整。

3、 語料數(shù)據(jù)加工、詞典加工
有了上一步的工作, 接下來進行加工語料或者字典的總結(jié)。這一步中不同的方法要做的工作不同,基本上是鋪人力的工作,難點是讓各個語料加工人員能協(xié)調(diào)一致,執(zhí)行統(tǒng)一的標(biāo)準(zhǔn) (通常會在這個過程中還會反作用到第二步情感分析標(biāo)準(zhǔn)的制定,因為看到實際數(shù)據(jù)后會發(fā)現(xiàn)標(biāo)準(zhǔn)總會有一些模糊地帶) 。

4、根據(jù)數(shù)據(jù)特征、規(guī)模等選擇合適的方法,并評測方法的優(yōu)劣
工程中的方法并不是單一的方法,想用一個方法或者模型來解決各類數(shù)據(jù)源上的問題是不可能的。想要做出好的效果一定是采用分而治之的思想,比如,能用規(guī)則精準(zhǔn)過的就不需要用分類器。
當(dāng)應(yīng)用在實際產(chǎn)品時,最好能結(jié)合產(chǎn)品的垂直特點,充分利用垂直行業(yè)的特性,比如在金融行業(yè)、汽車行業(yè),它們一定有自己的行話,這些行話具有非常明顯的規(guī)則或者特征

二、情感分析方法及工具 

情感分析對象的粒度最小是詞匯,但是表達一個情感的最基本的單位則是句子,詞匯雖然能描述情感的基本信息,但是單一的詞匯缺少對象,缺少關(guān)聯(lián)程度,并且不同的詞匯組合在一起所得到的情感程度不同甚至情感傾向都相反。所以以句子為最基本的情感分析粒度是較為合理的。篇章或者段落的情感也可以通過句子的情感來計算。

現(xiàn)階段關(guān)于情感分析方法主要有兩類:

(一)、基于詞典的方法:

基于詞典的方法主要通過制定一系列的情感詞典和規(guī)則,對文本進行拆句、分析及匹配詞典(一般有詞性分析,句法依存分析),計算情感值,最后通過情感值來作為文本的情感傾向判斷的依據(jù)。

做法:

基于詞典的情感分析大致步驟如下:

· 對大于句子力度的文本進行拆解句子操作,以句子為最小分析單元;
· 分析句子中出現(xiàn)的詞語并按照情感詞典匹配;
· 處理否定邏輯及轉(zhuǎn)折邏輯;
· 計算整句情感詞得分(根據(jù)詞語不同,極性不同,程度不同等因素進行加權(quán)求和);
· 根據(jù)情感得分輸出句子情感傾向性。

如果是對篇章或者段落級別的情感分析任務(wù),按照具體的情況,可以以對每個句子進行單一情感分析并融合的形式進行,也可以先抽取情感主題句后進行句子情感分析,得到最終情感分析結(jié)果。

參考及工具:

1. 常見英文情感詞庫:GI(The General Inquirer)、sentiWordNet 等;
2. 常見中文情感詞庫:知網(wǎng)、臺灣大學(xué)的情感極性詞典;
3. 幾種情感詞典構(gòu)建方法:基于 bootstrapping 方法的 Predicting the semantic orientation of adjectives 及 Determining the sentiment of opinions 兩種最為經(jīng)典的詞典構(gòu)建方法。

(二)、 基于機器學(xué)習(xí)的方法:

情感詞典準(zhǔn)確率高,但存在召回率比較低的情況。對于不同的領(lǐng)域,構(gòu)建情感詞典的難度是不一樣的,精準(zhǔn)構(gòu)建成本較高。另外一種解決情感分析的思路是使用機器學(xué)習(xí)的方法,將情感分析作為一個有監(jiān)督的分類問題。對于情感極性的判斷,將目標(biāo)情感分為三類:正、中、負(fù)。對訓(xùn)練文本進行人工標(biāo)注,然后進行有監(jiān)督機器學(xué)習(xí)過程,并對測試數(shù)據(jù)用模型來預(yù)測結(jié)果。

處理過程:

基于機器學(xué)習(xí)的情感分析思路是將情感分析作為一個分類問題來處理,具體的流程如下:

1、 文本預(yù)處理
文本的預(yù)處理過程是使用機器學(xué)習(xí)作用于文本分類的基礎(chǔ)操作。由于文本是非結(jié)構(gòu)化數(shù)據(jù)及其特殊性,計算機并不能直接理解,所以需要一系列的預(yù)處理操作后,轉(zhuǎn)換為計算機可以處理的結(jié)構(gòu)化數(shù)據(jù)。在實際分析中,文本更為復(fù)雜,書寫規(guī)范也更為隨意,且很有可能摻雜部分噪聲數(shù)據(jù)。整體上來說,文本預(yù)處理模塊包括去噪、特征提取、文本結(jié)構(gòu)化表示等。

特征抽?。褐形淖钚≌Z素是字,但是往往詞語才具有更明確的語義信息,但是隨著分詞,可能出現(xiàn)詞語關(guān)系丟失的情況。n-元文法正好解決了這個問題,它也是傳統(tǒng)機器學(xué)習(xí)分類任務(wù)中最常用的方法。

文本向量化:對抽取出來的特征,向量化是一個很重要的過程,是實現(xiàn)由人可以理解的文本轉(zhuǎn)換為計算機可以處理數(shù)據(jù)的重要一步。這一步最常用到的就是詞袋模型(bag-of-words )以及最近新出的連續(xù)分布詞向量模型(word Embedding)。詞袋模型長度為整個詞表的長度,詞語對應(yīng)維度置為詞頻,文檔的表示往往比較稀疏且維度較高。Embedding的表示方式,能夠有效的解決數(shù)據(jù)稀疏且降維到固定維度,更好的表示語義信息。對于文檔表示,詞袋模型可以直接疊加,而 Embedding 的方法可以使用深度學(xué)習(xí)的方法,通過 pooling 得到最終表示。

特征選擇:在機器學(xué)習(xí)分類算法的使用過程中,特征好壞直接影響機器的準(zhǔn)確率及召回率。選擇有利于分類的特征,可以有效的減少訓(xùn)練開支及防止模型過擬合,尤其是數(shù)據(jù)量較大的情況下,這一部分工作的重要性更加明顯。其選擇方法為,將所有的訓(xùn)練語料輸入,通過一定的方法,選擇最有效的特征,主要的方法有卡方,信息熵,dp 深層感知器等等。

目前也有一些方法,從比句子粒度更細(xì)的層次去識別情感,如基于方面的情感分析(Aspect based Sentiment Analysis),他們從產(chǎn)品的評價屬性等更細(xì)粒度的方面對評價主體進行情感傾向性分析。

2、分類算法選擇
文本轉(zhuǎn)換為機器可處理的結(jié)構(gòu)后,接下來便要選擇進行機器學(xué)習(xí)的分類算法。目前,使用率比較高的是深度學(xué)習(xí)(CNN,RNN)和支持向量機SVM)。深度學(xué)習(xí)的方法,運算量大,準(zhǔn)確率有一定的提高,所以都在做這方面的嘗試。而支持向量機則是比較傳統(tǒng)的方法,其準(zhǔn)確率及數(shù)據(jù)處理能力也比較出色,很多人都在用它來做分類任務(wù)。

參考及工具:

1. svm分 類 libsvm
2. python 機器學(xué)習(xí)工具 scikit-learn

3. 深度學(xué)習(xí)框架:Tensorflow 、Theano


作者  崔維福
本文轉(zhuǎn)自知乎國雙商業(yè)市場,轉(zhuǎn)載需授權(quán)


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }