本项目将会是自然语言处理相关方法的实践,数据集是Kaggle上关于句子相似度匹配的竞赛。涉及到文本类信息的数据清洗和特征工程,在模型方法上将会使用XGBoost。XGBosst方法是一类集成方法,将多个弱分类器集成为一个强大的模型。鉴于本次项目竞赛已经结束,所以最终的训练效果无从验证,本项目重点讨论文本特征的提取和XGBoost模型如何使用及调参。
本项目是一个句子相似度匹配的任务,数据集由Quora发布在kaggle上。Quora是海外的一个问答SNS网站,积累了大量的用户问答信息。Quora一个重要的产品原则是,每个逻辑上不同的问题应该有一个单独的页面,用户的提问将会首先匹配这些已经存在的页面,来优化知识获取途径。训练数据集是包含潜在相似的问题对以及对应Ground-truth标签的csv表格文件,这些问题对可以看做是用户的输入是一句话的文本。本项目面临的问题如下:
如何处理英文文本数据。英文由26个字符组成,在处理方式上天生比中文文本处理简单。在计算机领域,文本处理技术已经相当成熟,本项目将会使用适合机器学习的处理办法,这类方法的特点就是计算量巨大,以至于需要云服务器+GPU的算力才能在理想的时间内有效运算。具体到本项目中的方法就是将文本进行词义转换、词形还原、提取词根、提取词干,这一步可以理解为令牌化(Word Tokenize)。然后对令牌化的文本进行分析,例如:对单词的数量进行统计就会得到词频(Term Frequency),对语言整体的词分布进行描述的就是词向量(Word Vector),对句子中疑问副词的划分可以得到语义的一些信息,对整体语境的描述甚至可以得到感情色彩评分等等。这一步也叫作特征工程(Feature Engineering)。
如何建立模型。是的机器学习办法就是对数据建模的过程,建模可以采用深度模型(Deep Learning)或者非深度模型。其中深度模型也就是常说的神经网络,适合文本的神经网络模型有长短期记忆(Long short-term memory, LSTM)模型、孪生卷积网络(Siamese CNN);而非深度模型说的就是传统的机器学习办法,例如梯度提升树(eXtremeGradientBoosting,XGBoost)算法、随机森林(RandomForest)算法。本篇将采用XGBoost简历模型,它是由著名学者陈天奇(华盛顿大学博士)于2014年提出,XGBoost属于集成算法,将多个弱分类器集成为一个强分类器,其中分类器可以理解为树,那么分类的节点就是叶子。
另外本篇的难点是,训练集有40万行,测试集有200万行,所以一个首要的任务如何预防训练的模型过拟合(Over Fitting),过拟合就是模型在训练时表现很好而在实际数据中并没有达到预期的效果。与过拟合相对就是欠拟合(Under Fitting),而XGBoost是一种树模型,天然的会产生过拟合。由此带来的问题就是在项目的调参阶段比较不容易发现模型在损失上有较明显的改善,反而是模型在早停方面