前面课程中,问题的多标签分类模型,我们已经做完了。这节课开始,正式进入“问题+回答”的情感分析模型部分。

这一部分的数据集,也是业务人员帮我们标注的数据,商品类别还是面霜,训练集是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://www.ichenhua.cn/read/513