前面课程中,问题的多标签分类模型,我们已经做完了。这节课开始,正式进入“问题+回答”的情感分析模型部分。
这一部分的数据集,也是业务人员帮我们标注的数据,商品类别还是面霜,训练集是7k条,测试集是2k条。
模型分析
接下来,我们先简单分析一下,这个情感分析模型,和之前的问题分类有什么不同。其实很简单,就一点不同,问题分类的模型,是对一个句子做分类,而情感分析,是“问题+答案”两个句子的组合做分类。并且,情感分类的类别只有三个:好评、中评、差评,训练难度会更小。
Q:能美白吗? A:不能 -1 Q:能美白吗? A:还没开始用,不知道 0 Q:能美白吗? A:坚持用了三个月了,白了不少 1
同样的问题,搭配不同的答案,情感分析的类别也会有所不同。做情感分析的目的,就是通过搜集和分析一个问题的不同答案,统计出不同观念的比例,或者深挖某一类观点的细节,供业务方参考。
代码示例
复制文本分类项目,命名为:Pytorch_Bert_TextCNN_Sentiment,并导入数据集。
1、修改配置项
# config.py TRAIN_SAMPLE_PATH = './data/input/tb_question_answer_sentiment_7k.xlsx' TEST_SAMPLE_PATH = './data/input/jd_question_answer_sentiment_2k.xlsx' QUESTION_TEXT_LEN = 50 ANSWER_TEXT_LEN = 50 NUM_CLASSES = 3 ID2LABEL = ['中评', '好评', '差评']
配置项中的问题长度和答案长度参数,是随意给的一个值,还需要根据实际的数据集,验证参数值是否合理。
2、预处理,统计长度
# process.py import pandas as pd from config import * from utils import * def count_text_len(): question_text_len = [] answer_text_len = [] df = pd.read_excel(TRAIN_SAMPLE_PATH) print(len(df)) df.dropna(subset=['questionContent', 'answerContent', 'sentiment'], how='any', inplace=True) print(len(df)) for id, row in df.iterrows(): question_text_len.append(len(row['questionContent'])) answer_text_len.append(len(row['answerContent'])) print(len([i for i in question_text_len if i>50])) print(len([i for i in answer_text_len if i>50])) if __name__ == '__main__': count_text_len()
这节课,主要是给大家讲解了情感分析模型,和之前做的文本分类模型的不同,然后添加了几个配置项,下节课,就可以开始修改模型部分的代码了。
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/513