自然语言处理从入门到进阶资代码资源库汇总(随时更新)

自然语言处理从入门到进阶资代码资源库汇总(随时更新)

本页面由集智俱乐部的小仙女为大家整理的代码资源库,收集了大量深度学习项目图像自然语言处理领域的代码链接。包括NLP基础教程,打造聊天机器人,语音识别等等方向的代码,所有代码均按照所属技术领域建立索引,以便大家查阅使用。


6.1 基础教程

6.1.1 以NLP为主题的教程:DeepLearningForNLPInPytorch

6.1.2 从RNN出发的NLP教程:Practial Pytorch with Topic RNN & NLP

6.1.3 资源集合:Deep Learning for NLP resources

6.1.4 NLP解决方案集合:Solving NLP tasks using Deep Learning

6.2 工具

6.2.1 清华大学NLP实验室GitHub小站

6.2.2 复旦大学NLP实验室GitHub小站

6.2.3 中科院Kaggle全球文本匹配获奖项目

6.2.4 汉语处理工具包:Han Language Processing

6.2.5 Ansj中文分词

6.2.6 语句相似度计算:FuzzyWuzzy

6.3 机器翻译

6.3.1 基于PyTorch的机器翻译系统:PyOpenNMT

6.3.2 谷歌的注意力机制模型:Attention is all you need

6.3.3 可复用Seq2Seq模型:Sequence to Sequence Learning with Keras

6.3.4 机器翻译中的自动对齐方法

6.4 可交谈机器人

6.4.1 维基百科问答机器人:DrQA

6.4.2 剑桥的餐厅推荐机器人:NNDIAL

6.4.3 一个中文聊天机器人:chatbot-zh-torch7

6.4.4 一个英文聊天机器人:Deep Q&A

6.4.5 脸书的谈判机器人:Deal or No Deal?

6.4.6 可推理问答机器人:memnn

6.4.7 用端到端的记忆做QA:End-To-End Memory Networks

6.4.8 建立在人工数据集上的问答系统:bAbI tasks

6.4.9 问我啥都行:Dynamic Memory Networks for NLP

6.4.10 基于强化学习的聊天机器人:KB-InfoBot


基础教程

以NLP为主题的教程:DeepLearningForNLPInPytorch

github.com/rguthrie3/De

一套以 NLP 为主题的 PyTorch 基础教程。本教程使用Ipython Notebook编写,看起来很直观,方便学习。

从RNN出发的NLP教程:Practial Pytorch with Topic RNN & NLP

github.com/spro/practic

以 RNN for NLP 为出发点的 PyTorch 基础教程,分为“RNNs for NLP”和“RNNs for timeseries data”两个部分。

资源集合:Deep Learning for NLP resources

github.com/andrewt3000/

一套以NLP为主题的资源集合,其中包括了大量NLP相关的文章、博客。

NLP解决方案集合:Solving NLP tasks using Deep Learning

github.com/zhuruihe/Dee

一些使用深度学习解决自然语言处理问题的集合,内容包主体识别、文本理解、机器翻译等,有相当的参考价值

工具

清华大学NLP实验室GitHub小站

github.com/thunlp

著名的清华大学NLP实验室的GitHub站点,其中有知识图谱TransX的模型实现,一些必读的NLP Paper资源,以及一些中文语言处理的工具。

复旦大学NLP实验室GitHub小站

github.com/xpqiu

著名的福大大学NLP实验室的GitHub站点,其中提供了一套用于中文语言处理的工具,以及一个2016年微博分词的数据集

中科院Kaggle全球文本匹配获奖项目

github.com/HouJP/kaggle

16-中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程。

汉语处理工具包:Han Language Processing

github.com/hankcs/HanLP

HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

Ansj中文分词

github.com/NLPchina/ans

ansj分词.ict的真正java实现.分词效果速度都超过开源版的ict. 中文分词,人名识别,词性标注,用户自定义词典

语句相似度计算:FuzzyWuzzy

github.com/seatgeek/fuz

可以在多种尺度上比较两句话的相似度,比如fuzz.ratio("this is a test", "this is a test!") output:97。

机器翻译

基于PyTorch的机器翻译系统:PyOpenNMT

github.com/OpenNMT/Open

一套由PyTorch实现的机器翻译系统。

谷歌的注意力机制模型:Attention is all you need

github.com/jadore801120

Google Research 著名论文《Attention is all you need》的PyTorch实现。

可复用Seq2Seq模型:Sequence to Sequence Learning with Keras

github.com/farizrahman4

一套可以结合到自己网络中的Seq2Seq模型,使用起来非常灵活,可以直接使用,也可以集成在自己的网络中,且有多级别的Seq2Seq模型可以选择使用。

机器翻译中的自动对齐方法

github.com/nyu-dl/dl4mt

不同于传统的统计机器翻译系统,神经机器翻译完全采用大规模的神经网络模型。而大多数神经机器翻译方法均采用encoder-decoder模式,将源文本编码成固定长度的向量化表示。问题是随着句子长度增长,基于此模式的翻译性能大幅度恶化。为避免此问题,本方法在encoder-decoder模式中融入一种自动对齐策略。相关论文:《Neural Machine Translation by Jointly Learning to Align and Translate》。

可交谈机器人

维基百科问答机器人:DrQA

github.com/facebookrese

一个基于维基百科的开放域问题问答系统

剑桥的餐厅推荐机器人:NNDIAL

github.com/shawnwun/NND

剑桥大学机器对话系统小组的成果,可以用自然语言与人交流,从而根据用户的需求推荐相应的餐厅。从网上的评价来看,这个聊天机器人的构架以及训练方法和数据集都是非常靠谱的,是目的服务型聊天机器人的典型范例。项目论文:《A network-based end-to-end trainable task-oriented dialogue system》,集智AI学园“打造自己的聊天机器人”课程,第3节课是对这个系统的详细解析。

一个中文聊天机器人:chatbot-zh-torch7

github.com/majoressense

一个开放领域的聊天机器人,使用中文训练。

一个英文聊天机器人:Deep Q&A

github.com/Conchylicult

一个基于论文《A neural conversational model》实现的聊天机器人,在GitHub上挺有名的。

脸书的谈判机器人:Deal or No Deal?

github.com/facebookrese

Facebook AI Research 论文《Deal or No Deal? End-to-End Learning for Negotiation Dialogues》的 PyTorch 实现。开放了数据集,支持使用自然语言与人谈判,还支持以强化学习的方式自我学习。

可推理问答机器人:memnn

github.com/facebook/Mem

memnn的一个官方实现。可以根据文字描述,针对描述中的实体进行推理问答。

用端到端的记忆做QA:End-To-End Memory Networks

github.com/npow/MemN2N

类似于《Memory Networks》的工作,采用Recurrent attention model + large external memory,然而本工作采用一种End-to-end模式进行训练,无需知道背景信息中哪些是支撑事实。更适用于实际场景。采用一种神经机器翻译策略的扩展方法。该模型可灵活地解决QA问题(对比Memory Networks)及语言建模问题(对比RNN和LSTM)。

建立在人工数据集上的问答系统:bAbI tasks

github.com/facebook/bAb

Facebook Research 认为QA系统应该先在人造数据集上取得突破性进展才能比较好的应用于开放域非人造数据集中。当现实数据不够大时,研究方法通常会设计较为复杂的方法并陷入局部收敛问题中,而设计一种人造数据是避免此问题一种比较好的途径。

传统的对话是很难评估的,这是AI的长远问题,而问答系统中对问题的响应是比较容易评估的。

传统的QA方法是基于大规模知识库,并采用人工构造模版及特征。

对之前的MemNNs的一些问题进行改进。

问我啥都行:Dynamic Memory Networks for NLP

github.com/swstarlab/Dy

提出了一个Dynamic Memory Network,

Input:所有evidence句子作为sequence过GRU,有几个句子就生成几个hidden state;

Question:一句话,过GRU;

Episode: 以question output作为初始化,每次(共TM[Math Processing Error]次)过一轮GRU;

Answer:用mTM[Math Processing Error]作为初始化,根据具体情况决定输出y1...yn[Math Processing Error]还是yn[Math Processing Error]。

基于强化学习的聊天机器人:KB-InfoBot

github.com/MiuLab/KB-In

论文《Towards End-to-End Reinforcement Learning of Dialogue Agents for Information Access》的代码实现。

发布于 2017-08-19

文章被以下专栏收录