/Pytorch_for_NLP

用pytorch处理中文/英文自然语言理解问题,记录如何一步步处理纯文本、使用深度学习模型解决问题,主要用于自己学习

Primary LanguagePython

Pytorch_for_NLP

  对项目的组成结构,我画了这样一幅图,将Pytorch上的自然语言处理划分为6个步骤。以中文文本为例,

  • 第一步,我们要通过预处理模块的净化、分字/分词等步骤,将自然语言文本转化为token
  • 第二步,我们就可以着手构造数据集,譬如数据集划分、分批(batch)、shuffle等;
  • 第三步,我们要设计模型结构,并用pytorch框架构造模型;
  • 第四步主要涉及模型训练步骤,我们要设计模型训练与评估的逻辑,设置好训练过程中需要被打印出来的信息,完成模型训练、筛选和保存等功能;
  • 第五步,我们要在测试集上测试第四步筛选出来的模型性能,也就是设计模型测试逻辑;
  • 最后,我们需要设计模型上线的方式。

  不同的自然语言处理任务,这些步骤有些是可以复用的,有些又是有所不同的,我会思考以更清晰的方式表述。项目主要分6个文件夹,组织如下:
preprocessing: 数据预处理模块。按任务需求,对数据进行处理,通用的有分字/词,词表构造;和任务挂钩的有抽取式摘要的分句、NER的标注序列等等。
dataset: 数据集构造模块。这一块很简单,就是将预处理好的数据构造成Pytorch框架可用的形式,包括batch、shuffle这样的功能。
models: 模型结构设计模块
main: 模型训练、评估及测试逻辑设计模块,在这个模块中,针对不同NLP任务又设计了子目录
utils: 一些复用程度不高的特殊功能函数会放在这里,防止上述四个文件夹变得臃肿
online: 模型上线模块
  另外,有两个数据输入和输出的存放目录:
raw_data:存放原始的文本数据
outputs:存放模型评估、测试及推理的输出结果,存放训练日志等