基于情感词典的语义分析

基于情感词典的语义分析

好久没更了,前两天在打美赛,整了点好玩的东西,贴上来
基于情感词典的语义识别(python)
美赛中的一道题目,要求我们对用户的一段对于商品的回复来提取其表达的情感,从而用以对用户给出的评分作为参考的依据,总的来说就是,一段话——>一个权值
用到了pandas框架来处理exel,因为题目给出的数据集是tsv格式的
算法比较暴力,也比较无聊,就图一乐
首先贴上情感字典的链接 ——> http://www.keenage.com/html/c_bulletin_2007.htm
首先是对情感词典进行处理,这套情感词典分为,中文,英文
然后下面分为 正面评价 正面感情,负面评价,负面感情,程度词语,几种不同的txt文件
可惜的是没有对其进行程度的打标
因此第一步

数据预处理

正面评价和正面感情词语标记为 1
负面评价和负面感情词语标记为 -1
程度词语,根据不同程度,分别标记为

very = {
    1:'./1#较.txt',
    2:'./2#超级.txt',
    2.5:'./2.5#最.txt',
    1.5:'./1.5#很.txt',
    0.5:'./0.5#欠.txt'
}

(手动处理)
数据处理完成

读入tsv数据,切分词语

import pandas as pd
reader = pd.read_csv('./dataset/result.tsv',sep='\t',usecols=['review_headline','review_body'])

for row in reader.iterrows():

    review = str(row[1].values[0])+' '+str(row[1].values[1])
    words = review.split(' ')  #通过空格将英文单词分开(中文肯定不行啦)
    score = int()
    word_n = int()
    for key in score_dict:
        j = int()       #用于记录word在列表中的位置
        for word in words:          #对一句话中每个单词进行遍历
            j = j+1
            if word!= '\n':           
                if word in score_dict[key] and word!=' ' and word!='\n':      #查找这个word是否在情感词典里面
                    word_n = word_n+1           
                    #print('匹配'+word)
                    level_score = query_level(j,key)  #查找定位到的word前面几个单词是否是程度性词语(英文语法是这样的)
                    score = score + level_score
    if word_n != 0:
        rate = score/word_n
    else:
        rate = 0
    score_list.append(score)
    rate_list.append(rate)


这个函数,i是搜索到的关键词word的位置,score是这个word是一个负面还是正面的分数

def query_level(i,score): #查找程度词语函数
    #print(score)
    score = score_[score]
    if i >2 :
        for key in level_dict:
            if words[i-1] in level_dict[key] or words[i-2] in level_dict[key]:
                level_score = score*key  #程度词的权值乘以+1或者-1
                #print('程度'+words[i-1])
                return level_score #查到返回
            else :
                return score #查不到返回正负1
    else:
         return score  

输出

min = min(score_list)
max = max(score_list)
result_list = list()
for score in score_list:
result = (score - min)/(max-min)
result_list.append(result)

reader['result'] = result_list

reader.to_csv(r"result.tsv",mode = 'a',index =False)

print(rate_list)

print(result_list)

with open('result_list1.txt','w')as f:
f.writelines(str(result_list))
with open('score_list1.txt','w') as f:
f.writelines(str(score_list))
输出的结果还是蛮喜人的


image.png

这只是根据语义中的词语来计算score,输出的内容可以自己通过其他办法进行处理

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容