NLP的强大工具——AllenNLP

学习NLP,推荐一下AllenNLP这个工具。

从学习pytorch到学习处理NLP问题,中间有很长的路要走,其中有很多坑。NLP数据的预处理要比CV的麻烦很多,比如去除停用词,建立词典,加载各种预训练词向量,Sentence -> Word ID -> Word Embedding的过程(文本预处理方法小记),在很多技术点上都可以拓展出很多。其中不仅需要学习pytorch,可能还要学习spacy,NLTK,numpy,pandas,tensorboardX等常用python包。在用到RNN时,还要经过pad,pack,pad的处理过程,像这样的很多函数在使用时需要有数学基础加上简单的实践,感觉对一个新人来说,高维数据的流动有点抽象,不容易理解。此外还有数据集的读取,tensorboardX的使用。。。。茫茫多的技术点需要学习。在运行别人的代码后打印出信息,不仅看着上档次,而且可以看到很多实用的信息。。。

第一次知道allennlp这个工具,是在看了师兄给我的第一篇论文ELMo后大概了解的,后来学习pytorch才发现路途漫长,而这与两周一次的汇报进度相矛盾,于是计划在寒假学习一下allennlp,不仅要学习AllenNLP的使用,更要阅读AllenNLP的源码,可以学习到很多算法的实现。

AllenNLP是在pytorch基础上的封装,封装程度挺合理(后来发现了Gluonnlp,Gluonnlp在一些处理更方便,但缺乏灵活,功能更少),它的目标是处理NLP任务,可以减少很多额外的学习。比如,分词,帮你用spacy,NLTK,或者简单的按空格分词处理。数据集的读取,它内置了很多数据集的读取,你可以在通过学习它的读取方式,在它的基础上对自己需要的数据集进行读取。在Sentence -> Word ID -> Word Embedding的过程中,Glove,ELMo,BERT等常用的都可以直接使用,需要word,char粒度的都可以。log打印输出,在内置的输出项之外,你可以很方便地加入想要输出的信息。模型的各个组件中的参数都可以存在一个json/jsonnet文件中,修改参数进行实验很方便。

入门学习的网站:
AllenNLP tutorials
github AllenNLP源码
简书中的一篇教程
realworldnlp系列教程(导出,用在生产中,有一篇文章可以参考,allennlp直接用pytorch的jit导出会有问题)
知乎中对realworldnlp的一篇翻译文章

猜你喜欢

转载自blog.csdn.net/m0_38133212/article/details/86526139