-
学习NER需要掌握哪些知识,相关技术应该怎么往下学习
-
python基础知识,刚开始可以不会写,但一定要看得懂代码,学工科的基本都学过C或C++中的一门,这个应该不是很难;
-
pytorch或tensorflow其中之一,这个是必要的,同样刚开始能读懂代码就行;
-
搞清楚NER概念后,找几个公开的数据集下载下来看一看数据长什么样,感受感受,中文的英文的都有,这里推荐ACE2005数据集;
-
深入学习下字向量、词向量,按one-hot、word2vec或glove、到bert路线学习,其实就是一个的缺点引出另一个,刚开始不需要过于琢磨bert的细节,只需要知道bert产生的向量有啥优点即可,试着可视化下向量的运算“国王”-“男性”+“女性”=“王后”等操作,直观的感受下次向量学习到的是什么东西;
-
了解下什么是RNN,精读下LSTM的门控单元的设计,为什么要用双向BiLSTM,看下在tensorflow或pytorch中怎么调用BiLSTM,如果能自己实现一遍就更好了,另外学习什么是end-to-end模型或seq-to-seq模型;
-
学习下什么是softmax,什么是隐马尔可夫模型,马尔可夫过程,进而详细了解下什么是条件随机场crf,然后softmax和crf作为模型的输出模块各有什么优缺点,为啥在NER中要用crf,这部分可能会晦涩难懂些,但是必须要啃下来的;
-
了解NER数据集怎么标注、怎么生成,标注平台可以了解下brat,很经典,了解BIOES标注方式和BIO方式,然后基于某个数据集生成这样的格式;
-
到此,做NER所需要的基础组件都学得差不多了,就可以尝试调试一个开源模型试下,推荐ChineseNER这个开源代码,这过程可以学习tensorflow实现深度学习模型的基本框架是怎么样的、tf怎么调用BiLSTM、怎么接crf来输出等等,反正就逐行代码精读就可以了。
-
这样,一个能达到八成准确率的NER模型就完成了。
-
进阶学习
-
精读word2vec内部的实现原理,CBOW和Skip-gram两种方法的实现及内部优化细节等;
-
学习下attention机制,self-attention机制,transformer,他们比LSTM好在哪,这里要花很大一部分精力,这部分相当于是目前NLP中最核心的技术了;
-
预训练模型:GPT、ELMo、BERT、ERNIE论文精读,了解下其他预训练模型的改进idea;
-
调试并精读BERT+BiLSTM+CRF的代码实现,至此当前NER这一块的基础知识和组件基本就攻克完成了,至于提升精度及具体行业应用之类的就是在当前知识体系上修修补补和fine-tune罢了。(这之间如果可以自己用pytorch一步一步实现以下两个模型等话更佳)
-
下一步可以学习关系抽取、事件抽取、知识图谱构建等NER等下游任务(有兴趣可以+我一起学习讨论);