详细分析代码”import jieba import pandas as pd import random stopwords=pd.read_csv("../stopwords.txt",index_col=False,quoting=3 ,sep="\t",names=['stopword'], encoding='utf-8') stopwords=stopwords['stopword'].values def preprocess_text(content_lines,sentences,category): for line in content_lines: try: segs=jieba.lcut(line) segs = filter(lambda x:len(x)>1, segs) segs = filter(lambda x:x not in stopwords, segs) sentences.append((" ".join(segs), category)) except: print(line) continue sentences=[] preprocess_text(data_com_X_1.content.dropna().values.tolist() ,sentences ,'like') n=0 while n <20: preprocess_text(data_com_X_0.content.dropna().values.tolist() ,sentences ,'nlike') n +=1 random.shuffle(sentences) from sklearn.model_selection import train_test_split x,y=zip(*sentences) train_data,test_data,train_target,test_target=train_test_split(x, y, random_state=1234)“添加详细注释,每段代码的作用,参数代表什么
时间: 2023-12-04 21:02:35 浏览: 191
二.1.案例代码和相关文件
# 导入jieba分词库和pandas库
import jieba
import pandas as pd
# 读取停用词表
stopwords=pd.read_csv("../stopwords.txt",index_col=False,quoting=3,sep="\t",names=['stopword'], encoding='utf-8')
stopwords=stopwords['stopword'].values
# 定义预处理函数,将文本进行分词、去除停用词等操作
def preprocess_text(content_lines,sentences,category):
for line in content_lines:
try:
# 使用jieba分词对文本进行分词
segs=jieba.lcut(line)
# 过滤掉长度小于2的词汇
segs = filter(lambda x:len(x)>1, segs)
# 过滤掉停用词
segs = filter(lambda x:x not in stopwords, segs)
# 将处理后的文本及其类别添加到sentences列表中
sentences.append((" ".join(segs), category))
except:
print(line)
continue
# 定义空列表sentences,用于保存预处理后的文本及其类别
sentences=[]
# 对数据集中标记为1(喜欢)的文本进行预处理,并将其添加到sentences列表中
preprocess_text(data_com_X_1.content.dropna().values.tolist() ,sentences ,'like')
# 对数据集中标记为0(不喜欢)的文本进行预处理,并将其添加到sentences列表中
n=0
while n <20:
preprocess_text(data_com_X_0.content.dropna().values.tolist() ,sentences ,'nlike')
n +=1
# 对sentences列表进行随机打乱,以免训练集和测试集中的数据顺序影响模型性能
random.shuffle(sentences)
# 导入train_test_split函数,将sentences列表分为训练集和测试集
from sklearn.model_selection import train_test_split
x,y=zip(*sentences)
train_data,test_data,train_target,test_target=train_test_split(x, y, random_state=1234)
注释:
1. 导入jieba分词库和pandas库
2. 读取停用词表
3. 定义预处理函数preprocess_text,用于对文本进行分词、去除停用词等操作
4. 定义空列表sentences,用于保存预处理后的文本及其类别
5. 对数据集中标记为1(喜欢)的文本进行预处理,并将其添加到sentences列表中
6. 对数据集中标记为0(不喜欢)的文本进行预处理,并将其添加到sentences列表中
7. 对sentences列表进行随机打乱,以免训练集和测试集中的数据顺序影响模型性能
8. 导入train_test_split函数,将sentences列表分为训练集和测试集
阅读全文