当前位置:   article > 正文

NLP Project 2:情感分析,使用tf-idf,Logistic回归和SVM_svm tfidf

svm tfidf

Step 1: 文本读取

1、读取数据

文本读取:数据分为三份:pos_train,neg_train和test。
首先对pos和neg的data读取,将内容取出来
这里的一个难度是,对于同一组样本,有的以多行的形式展示,还有某些样本被多行之间还有空格。
如以下情况:
在这里插入图片描述

在这里插入图片描述
处理方法是建立一个save列表,每次遇到文字就储存进去,遇到当前行包含review的行就把这些文字合并成字符串添加到train_pos_comments中。

def process_file(path,list):


    save=[]#建立储存列表
    f=open(path,"r",encoding="utf-8").readlines()#打开路径
    for line in f:#遍历每一行

        if "review"  in line:#如果当前行的文字含有review
            if len(save)!=0:#且save里不为空
                list.append("".join(save))#更新一次train_pos_comments
                save=[]#清空save
            continue#继续下一个循环
        if "review" not in line and line.rstrip():#如果当前行是文字
            save.append(line.rstrip())#把该行加入save中

process_file(train_pos_file,train_pos_comments)#分别对pos和neg进行处理
process_file(train_neg_file,train_neg_comments)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2、建立label

pos中有5000个,neg有3065个,pos的标签值定为1,neg的标签值定位0,建立与data相同长度的labels

# print(len(train_comments))#5000
# print(len(test_comments))#3065

pos_labels=["1"]*5000
neg_labels=["0"]*3065
  • 1
  • 2
  • 3
  • 4
  • 5

3、将pos和neg拼接

将data和label分别拼接起来

'''拼接训练集的pos和neg样本'''
train_set=train_pos_comments+train_neg_comments
train_label=pos_labels+neg_labels
# print(len(train_set))#8065
# print(len(train_label))#8065
  • 1
  • 2
  • 3
  • 4
  • 5

4、测试集的文本读取

这里和训练集不同的是每一个回答都自带label,那么在自定义函数中需要返回test_comments和对应的label值

''
    本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
    推荐阅读
    相关标签
      

    闽ICP备14008679号