top of page

単語感情極性対応表を試してみる

執筆者の写真: snackvirtualsnackvirtual

感情を把握するために、単語感情極性対応表を用いたサンプルを作ってみる



Textで保存して、csv化する


次にMeCabで形態素解析をして、名詞、動詞、形容詞のみ取り出す

これらを単語感情極性対応表と照らし合わせる

値が正ならポジティブな感情として

値が負ならネガティブな感情として

アナログ値を加算し、数をカウントする


やってみると、まったく使えない


最もわかりやすい例としては、否定形で書いているのに、単語だけでポジネガ判定をするので、逆の判定となる

このあたりはこの記事でよくまとまっている



感情分析自体は必須ではないが、例えば感情に合わせてキャラクタの表情を変えるようなことは是非実装したい機能だ


必須ではないが、楽しみな課題と考えられる



Pythonソースコード

# 単語感情極性対応表の読み込み

import csv
pn_ja_dic = {}
fp = open("Downloads/pn_ja.dic.csv","rt")
reader = csv.reader(fp,delimiter = ",")

for i, row in enumerate(reader):
    word = row[0]
    affection = row[3]
    pn_ja_dic[word] = affection
    #print(word,affection)
# 入力した文に対して、単語感情極性対応表により、ポジティブ、ネガティブな言葉のリストと、出現回数と合計値を出力

def pn_judge(input_str):
    posi_count = 0
    nega_count = 0
    zero_count = 0
    posi_level = 0
    nega_level = 0
    
    macab_result = tagger.parseToNode(input_str)
    
    while macab_result:
        if macab_result.feature.split(",")[0] == "名詞" or  macab_result.feature.split(",")[0] == "動詞" or  macab_result.feature.split(",")[0] == "形容詞":
            
            word = macab_result.feature.split(",")[6]
               
            if word in pn_ja_dic:
                
                value = float(pn_ja_dic[word])

                if value > 0:
                    posi_count += 1
                    posi_level += value
                    print(word," POSI ",value)
                elif value < 0:
                    nega_count += 1
                    nega_level -= value
                    print(word," NEGA ",value)
                else:
                    zero_count += 1
                    print(word," ZERO ",value)
                    
            else:pass
        macab_result = macab_result.next  
        
    return(posi_count,nega_count,zero_count,posi_level,nega_level)

import MeCab
tagger = MeCab.Tagger()
sample_text = "昨日の試合で勝利できなかった"

print(pn_judge(sample_text))



閲覧数:1回0件のコメント

最新記事

すべて表示

Comentários


bottom of page