Simple sentiment analysis using regular expression
Jump to navigation
Jump to search
使用 Regular expression 簡易地進行文字的「情感分析」(sentiment analysis)。
輸入文字範例1[edit]
我喜歡 pokemon。 我不喜歡 pokemon。 我樂愛 pokemon。 我不樂愛 pokemon。
三種類型情緒
- 正面情緒 (positive sentiment)
- 方式: 搜尋包含「喜歡」、「樂愛」但是前面不緊接「不」字
- 搜尋: [^不](喜歡|樂愛)
- 負面情緒 (negative sentiment)
- 方式: 搜尋包含「不喜歡」、「不樂愛」
- 搜尋: [不](喜歡|樂愛)
- 中性情緒 (neural sentiment)
- 方式: 搜尋不包含「喜歡」、「樂愛」
- 搜尋: ^((?!(喜歡|樂愛)).)*$
但是這樣的搜尋方式,沒有處理到雙重否定 (double negative,負負得正) 比較複雜文法的句子。
輸入文字範例2[edit]
我喜歡 pokemon。 我不喜歡 pokemon。 說我不喜歡 pokemon 是錯誤的。 我樂愛 pokemon。 我不樂愛 pokemon。 說我不樂愛 pokemon 是錯誤的。
三種類型情緒
- 正面情緒 (positive sentiment)
- 方式: 搜尋 (1) 包含「喜歡」、「樂愛」但是前面不緊接「不」字 (2) 包含「不喜歡」、「不樂愛」,句子中同時包含否定字串,如例子的「錯誤」。
- 搜尋:
- 條件 (1) 搜尋: [^不](喜歡|樂愛)、
- 條件 (2) 搜尋: 找到雙重否定 (?=.*[不](喜歡|樂愛))(?=.*錯誤).*、
- 整合條件 (1) 和條件 (2) 的搜尋: [^不](喜歡|樂愛)|(?=.*[不](喜歡|樂愛))(?=.*錯誤).*
- 負面情緒 (negative sentiment)
- 方式: 搜尋包含「不喜歡」、「不樂愛」,同時句子中同時不包含否定字串,如例子的「錯誤」。
- 搜尋: ^(?!.*錯誤).([不](喜歡|樂愛)).*$
- 中性情緒 (neural sentiment)
- 方式: 搜尋不包含「喜歡」、「樂愛」
- 搜尋: ^((?!(喜歡|樂愛)).)*$
輸入文字範例3[edit]
「不」、「愉快」相隔幾字
與 pokeman 的冒險,會有不少的爭執、不愉快 與 pokeman 的相處比較不會因為這個方面而鬧得不愉快 和 pokeman 相處滿愉快 鬧的心情不是很愉快 沒有很愉快 很愉快
三種類型情緒
- 正面情緒 (positive sentiment)
- 方式: 搜尋包含「愉快」但是前面不包含「不」或「沒」字
- 搜尋: 搜尋: ^((?![不|沒]).)+(愉快) 或 ^([^不|沒])+(愉快) (線上測試)
- 負面情緒 (negative sentiment)
- 方式: 搜尋包含「愉快」但是前面包含「不」或「沒」字
- 搜尋: ([不|沒]).*(愉快)
- 中性情緒 (neural sentiment)
- 方式: 搜尋不包含「愉快」、「喜歡」、「樂愛」
- 搜尋: ^((?!(愉快|喜歡|樂愛)).)*$
備註[edit]
- 段落每個句子需要資料前處理,分成每個句子一行。
- 情緒文字需要事先建立詞庫。
- 詞庫文字大量時,效能未知。
- 本方法沒有處理: 段落文字不包含關鍵字,需要透過前後文判斷情緒時。
issues
- 以標點符號當作斷點