课程链接: 清华大学驭风计划
代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com)
驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算机语言(刘知远教授) 以及数据结构与算法(邓俊辉教授)。本人是综合成绩第一名,除了数据结构与算法其他单科均为第一名。代码和报告均为本人自己实现,由于篇幅限制,只展示任务布置以及关键代码,如果需要报告或者代码可以私聊博主
自然语言处理部分授课老师为刘知远教授,主要通过从统计方法入门,embedding,预训练模型,知识图谱,关系抽取,文本生成以及信息检索等不同下游任务入门自然语言处理
有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~
情感分析旨在挖掘文本中的主观信息,它是自然语言处理中的经典任务。在本次任务中,我们将在影评文本数据集(Rotten Tomato)上进行情感分析,通过实现课堂讲授的模型方法,深刻体会自然语言处理技术在生活中的应用。
同学们需要实现自己的情感分析器,包括特征提取器(可以选择词袋模型、n-gram模型或词向量模型)、简单的线性分类器以及梯度下降函数。随后在数据集上进行训练和验证。我们提供了代码框架,同学们只需补全 model.py
中的两个函数。
我们使用来自Rotten Tomato的影评文本数据。其中训练集 data_rt.train
和测试集 data_rt.test
均包含了3554条影评,每条影评包含了文本和情感标签。示例如下:
+1 visually , 'santa clause 2' is wondrously creative .
其中,+1
表示这条影评蕴涵了正面感情,后面是影评的具体内容。
TODO:补全 featureExtractor
函数
在这个步骤中,同学们需要读取给定的训练和测试数据集,并提取出文本中的特征,输出特征向量。
同学们可以选择选择词袋模型、n-gram模型或词向量模型中的一种,也可以对比三者的表现有何差异。
TODO:补全 learnPredictor
函数
我们提供的训练数据集中,每句话的标签在文本之前,其中 +1
表示这句话蕴涵了正面感情,-1
表示这句话蕴涵了负面感情。因此情感分析问题就成为一个分类问题。
我们采用最小化hinge loss的方法训练分类器,假设我们把每条影评文本 x x x映射为对应的特征向量 ϕ ( x ) \phi(x) ϕ(x),hinge loss的定义为
L ( x , y ; w ) = max ( 0 , 1 − w ⋅ ϕ ( x ) y ) L(x,y; \mathbf{w})=\max(0,1-\mathbf{w}\cdot\phi(x)y) L(x,y;w)=max(0,1−w⋅ϕ(x)y)
同学们需要实现一个简单的线性分类器,并推导出相应的梯度下降函数。
在训练集上完成训练后,同学们需要在测试集上测试分类器性能。本小节要求同学们画出训练集上的损失函数下降曲线和测试集的最终结果,并对结果进行分析。
同学们需要提交源代码和实验报告。实验报告中应包含两部分内容:
整个情感分析利用了词袋模型 , tfidf , N-gram模型 , word2vec模型 以及 doc2vec模型做对比,结果如下。