# -*- coding:utf-8 -*-
#进行数据清洗和结巴分词,并去除停用词
import jieba
import pandas as pd
import re
import codecs
#加载数据,返回清洗后数据
def loaddata(datapath):
data = pd.read_table(datapath, header=None, index_col=None) # header=None 表示文件的第一行不是列的名字,是数据
#数据清洗
for i in range(len(data[0])):
data[0][i] = clearTxt(data[0][i])
return data
#数据清洗
def clearTxt(line):
if line != '':
line = line.strip()
#去除文本中的英文和数字
line = re.sub("[a-zA-Z0-9]","",line)
#去除文本中的中文符号和英文符号
line = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。??、~@#¥%……&*()]+", "",line)
return line
#删除停用词
def delstopword(wordList,stopkey):
sentence = ""
for word in wordList:
word = word.strip()
if word not in stopkey:
if word != '\t':
sentence += word + " "
return sentence.strip()
#存储到csv文件
def savedata(savepath, columnname, data):
dataframe = pd.DataFrame({columnname: data})
dataframe.to_csv(savepath, index=False)
if __name__ == '__main__':
# 读入数据,得到清洗后结果,返回形式为列表
pos = loaddata('F:/t/test/pos.csv')
neg = loaddata('F:/t/test/neg.csv')
# 分词,结果返回pos['c_w']列表
pos['c_w'] = [jieba.lcut(sent) for sent in pos[0]] # 使用for循环来获得分词后得到的每一个词语,返回一个列表
neg['c_w'] = [jieba.lcut(sent) for sent in neg[0]]
#去掉停用词,结果返回pos['d_w']列表
stopkey = [w.strip() for w in codecs.open('F:/t/test/stopWord.txt', 'r', encoding='utf-8').readlines()] #广播形式获取停用词表
pos['d_w'] = [delstopword(line, stopkey) for line in pos['c_w']]
neg['d_w'] = [delstopword(line, stopkey) for line in neg['c_w']]
# 存数据到csv
savedata('F:/t/test/pos_jieba.csv', 'pos_jieba', pos['d_w'])
savedata('F:/t/test/neg_jieba.csv', 'neg_jieba', neg['d_w'])
情感分析:数据预处理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- pandas读取数据时降低内存使用 ···def reduce_mem_usage(df):""" iterate...
- 当 pandas 读取超过100M数据时需要优化内存,将数据转换为合理的数据类型。 程序 实例,数据集大小300多...