现如今,深度学习方法成了解决nlp任务的首选方案,比如textCNN、LSTM、GRU、BiLSTM、Attention、BERT等等。当然,有的nlp任务也可以用机器学习方法去解决,至于哪种任务用哪种方法,需要我们根据实际情况去选择。就目前我接触到的nlp赛题任务有,文本分类、情感分析、关系抽取、文本匹配、阅读理解、问答系统等等,比如针对文本二分类任务,我们可以把CNN、LSTM、Attention进行各种排列组合来搭建网络,也可以用BERT直接预测,或者使用机器学习方法,训练出TF-IDF,然后使用lr去预测,甚至还可以使用一些骚操作,在搭建好的深度学习网络上,加入各种文本特征,构成一个多输入的网络结构。因此,解决一个nlp的任务可能有多种方案,但是哪一个方案更合适需要我们不断地去分析尝试。
当我们拿到一个nlp赛题任务时,首先我们需要对赛题任务和给出的数据进行细致地分析,了解赛题任务具体是干什么的,并且要深入地分析理解数据,知道数据的含义,这样可以有助于我们制定解决方案,同时也有利于我们进行数据预处理,比如我们分析知道数据中包含很多链接、#...#标签和@人名这些信息,那么我们就该去考虑这些信息对于我们解决该任务是否有用,如果没用是否该删除这些信息,又比如我们分析知道一条样本中的主要信息在前100个词中,那么我们进行pad_sequences操作时,是否该考虑使截断补齐后的文本长度为100等等,这些都需要我们对数据进行深入地分析后才能知道。然后我们需要去预处理数据,我个人认为这一步和前面的数据分析关系很强,很多预处理操作都是基于对数据的分析而来,一般我们对文本预处理包含分词、去除停用词、训练词向量、文本序列化等等,当然,对于有的任务还包含同义词替换、训练词权重等等。再接着就是搭建模型,具体使用什么模型得根据具体任务来定。最后就是优化模型,常用的操作有调参、更改网络结构、针对评价指标优化等等