stanfordSentimentTreebank 的映射关系

本文介绍Stanford Sentiment Treebank数据集的组成部分及其处理流程,包括将情感评分映射为五类标签的方法、从词典获取标签、句子切分及划分训练集、测试集和验证集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在stanfordSentimentTreebank中  有好几个txt文件

下面我来梳理下这个东西

datasetSentences.txt: 里面分别是 sentence_index,  sentence  对应为 句子的序号和 对应的句子

datasetSplit.txt: 里面分别是 sentence_index splitset_label  对应为 句子的序号 和 句子属于的数据集 (分为1:训练集, 2:测试集, 3:验证集)

dictionary.txt: 里面是不同字符,单词,短语,及句子 以及对应的标号  这些标签号可以在 sentiment_labels.txt 中找到一一对应的 sentiment values 其中值的分布为 [0, 0.2], (0.2, 0.4], (0.4, 0.6], (0.6, 0.8], (0.8, 1.0], 我这里直接映射分成1,2,3,4,5类

SOStr.txt: 为对应句子的切分的数据,用‘|’进行分割每个单词

STree.txt: 暂时还没研究


这里需要注意的是,datasetSentences.txt中的每个句子,都可以在dictionary.txt中找到对应的句子 以及标签



后面我会把对应的程序贴上来:主要由4个程序组成。第一个根据分数把标签分为5类。

第二个 到字典对应的标签。

第三个 把句子拆分

第四个 得到训练集测试集和验证集的标签

#coding:utf-8


dictPath = '../treeData/sentiment_labels.txt'
diction_num = dict()
fp = open(dictPath,'r')
for i in fp.readlines()[1:]:
    u = i.replace("\n","").split("|")
    nu = float(u[1])
    if nu<=0.2:
                uu = 1
    elif nu<=0.4:
                uu = 2
    elif nu<=0.6:
                uu = 3
    elif nu<=0.8:
                uu = 4
    else:
                uu = 5
    diction_num[u[0]] = uu
    #print (diction_num)


txtPath = '../treeData/dictionary.txt'
diction = dict()

fp=open(txtPath,'r')
cc = 1
for i in fp.readlines():
    u = i.replace("\n","").split("|")
    diction[u[0]] = diction_num[u[1]]

    cc += 1
fp.close()

txtpath = '../treeData/SOStr.txt'
fpp=open(txtpath)
arr=[]
i = 0
for lines in fpp.readlines():
    lines = lines.replace("\n","").split("|")
    for line in lines:
        arr.append(line.split("|"))
fpp.close()


path = 'datasetSplit.txt'


fp = open(path)

train = []
test = []
dev = []
trainLabel = []
testLabel = []
devLabel = []
k = 0

#fptrain = open('train.txt','w')
#fptest = open('test.txt','w')
#fpdev = open('dev.txt','w')

for i in fp.readlines()[1:]:
    a = i.replace("\n","").split(",")
    if a[1] == '1':
        train.append(int(a[0]))
        trainLabel.append(labels[k])
    #    fptrain.write(a[0]+" ")
     #   fptrain.write(str(labels[k]))
      #  fptrain.write("\n")
    elif a[1] == '2':
        test.append(int(a[0]))
        testLabel.append(labels[k])
       # fptest.write(a[0]+" ")
        #fptest.write(str(labels[k]))
        #fptest.write("\n")
    else:
        dev.append(int(a[0]))
        devLabel.append(labels[k])
        #fpdev.write(a[0]+" ")
        #fpdev.write(str(labels[k]))
        #fpdev.write("\n")
    k += 1















     


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值