如何用KNIME進行情感分析 | 下
如何能夠讓機器“讀懂”人的情感?情感分析提供了解決的一個思路。這也使得它成為自然語言分析(Natural Language Processing)中最令人神往的山對面的“風景”。
什么是情感分類(sentiment classification)
簡單說,就是對于一句或一段話,判斷說話者的情感,是正向(積極)的,還是負向(消極)的。這種情感分類任務可以看作一個二分類問題。
完成情感分類的核心問題
決定分類準確率的關鍵在于特征的選取與語料的質量。其中特征問題解決的是:用什么樣的特征來抽取,得到的文本才足夠原始呢?每個詞看似已經是文本的足夠底層的特征,但其實也是經過高度抽象的。這也會給深度學習在自然語言領域的應用帶來一些困難。同樣,這也是提高模型準確度的一個有效的方法。
在上一篇情感分析的講解中,我們已經知道如何使用KNIME構造一個情感分析模型。這一篇中,我們將使用N元語法(N-gram),借助KNIME來探究如何選取詞語特征,獲得的模型能夠實現更準確地分類。
N元語法
在計算語言學中,n-gram指的是文本中連續的n個item。n-gram中如果n=1則為unigram,n=2則為bigram,n=3則為trigram。n>4后,則直接用數字指稱,如4-gram,5gram。(Wikipedia)
以 I would like to go to Beijing. 這句話為例。
bigram為:
- I would
- would like
- like to
- to go
- go to
- to Beijing
1.讀取CSV格式文件
使用CSV reader結點讀取一個CSV格式文件,該文件寫入了1500條載于IMBD上的影評,并且給出了情感向量即POS(positive)和NEG(negative)。
2.字符串轉化為文檔格式
接下來將字符串轉化為文檔格式,繼而使用“過濾”節點刪除無關列,使文件只留下儲存文檔對象的一列。
3.數據預處理
首先計算特征詞語需要在文檔中出現最小次數N。利用java語句計算:out_MinDF = (Number_Rows / 100) * Min_Percentage
繼而進行刪除標點,刪除數字,刪除文檔中出現次數小于N的詞匯,將大寫轉化為小寫,提取詞語主干(stemmed)和刪除停用詞(stop word)。至此我們可以完成預處理。但是由于我們想探索的是雙詞分類與單詞分類的效果差異,所以這里花開兩朵各表一枝,雙詞分類的這一支不需要做主干提取和停用詞刪除的工作。
(stemmed意指將詞的變形歸類,使得機器在處理文本時減少需要跟蹤的獨特詞匯,這會加快“標簽化”處理的過程。停用詞是人類語言中沒有實際意義或功用的詞語,如助詞,限定詞等)
4.通過單詞或雙詞建立文本特征向量
想象在一個巨大的文檔集合,里面一共有M個文檔,而文檔里面的所有單詞提取出來后,一起構成一個包含N個單詞的詞典,利用詞袋(Bag-of-words)模型,每個文檔都可以被表示成為一個N維向量(將每篇文檔表示為一個向量,每一維度代表一個詞語,其數值代表詞語在該文檔中的出現次數)。這樣,就可以利用計算機來完成海量文檔的分類過程。
一般來說,太多的特征會降低分類的準確度,所以需要使用一定的方法,來“選擇”出信息量最豐富的特征,再使用這些特征來分類。
特征選擇遵循如下步驟:
- 1. 計算出整個語料里面每個詞的信息量
- 2. 根據信息量進行倒序排序,選擇排名靠前的信息量的詞
- 3. 把這些詞作為特征
5.構建模型
通過決策樹算法構建模型在上一篇已經講過,需要注意的是本篇需要對1-gram特征和1-gram 2-gram集合特征分別構建模型,以進行比較。這里不再贅述。
6.ROC曲線對比
在文檔向量集創建后,詞匯的情感分類已經被提取出來,系統自動創建了兩種預測模型并打分。一個模型基于一個單獨詞匯的特征建立,第二個模型基于1-gram和2gram集合的特征。接著通過ROC接收器操作特性曲線(receiver operating characteristic curve)對這兩個進行比較。
可以看出,在分析影評這一文本的情感態度時,使用N元語法構建出來的情感分類模型,診斷準確度更高,為85.05%。這樣有助于我們針對“何種情感分類模型對NLP分析更為有效”這一問題時做出決策。