/nlpnotebook

一份不断完善的NLP学习笔记

Primary LanguageJupyter Notebook

nlp

我的NLP学习进展

如何设计出一个更work的task-specific的网络?

NLP任务总结

自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括:

1.句法语义分析:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。

2.信息抽取:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽取、因果关系抽取等关键技术。

3.文本挖掘(或者文本数据挖掘):包括文本聚类、分类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。

4.机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。根据输入媒介不同,可以细分为文本翻译、语音翻译、手语翻译、图形翻译等。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。

5.信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可利用1,2,3的技术来建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。

6.问答系统: 对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。

7.对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。同时,为了体现个性化,要开发用户画像以及基于用户画像的个性化回复。

  • 简单的任务:拼写检查,关键词检索,同义词检索等
  • 复杂一点的任务:信息提取(比如从网页中提取价格,产地,公司名等信息),情感分析,文本分类等
  • 更复杂的任务:机器翻译,人机对话,QA系统

中英文差异:汉语重义合,英语重形合

环境搭建

Google Colab: [《Google Colab配置记录》](md/Google Colab配置记录.md)

深度学习服务器:《服务器运维知识整理》

Win10下的环境搭建:

Win10下安装Anaconda+CUDA+cudnn+TensorFlow+keras+PyTorch+Pycharm

Github库

NLP研究入门之道:https://github.com/zibuyu/research_tao

复旦NLP实验室NLP上手教程:https://github.com/FudanNLP/nlp-beginner

Information-Extraction-Chinese: 中文实体识别与关系提取

SnowNLP: Simplified Chinese Text Processing

NLP工具包大全 :https://github.com/fighting41love/funNLP

ChineseNER:https://github.com/zjy-ucas/ChineseNER

算法/深度学习/NLP面试笔记:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

NLP-BERT 谷歌自然语言处理模型:BERT-基于pytorch:https://github.com/Y1ran/NLP-BERT--ChineseVersion

text_classification:https://github.com/brightmart/text_classification

cocoNLP : https://github.com/fighting41love/cocoNLP

人名、地址、邮箱、手机号、手机归属地 等信息的抽取,rake短语抽取算法。

Chinese Word Vectors 中文词向量:https://github.com/Embedding/Chinese-Word-Vectors

基于医疗领域知识图谱的问答系统:https://github.com/zhihao-chen/QASystemOnMedicalGraph

https://github.com/zhihao-chen/QASystemOnMedicalKG

Eliyar.Blog:https://eliyar.biz/archives/

Kashgari:https://github.com/BrikerMan/Kashgari

bert-as-service :https://github.com/hanxiao/bert-as-service

CDCS **数据竞赛优胜解集锦:https://github.com/geekinglcq/CDCS

HanLP:https://github.com/hankcs/pyhanlp 词性标注

awesome-chinese-nlp:https://github.com/crownpku/Awesome-Chinese-NLP

all kinds of text classification models:https://github.com/brightmart/text_classification

Blog

刘焕勇:https://liuhuanyong.github.io/

Machine Learning Mastery 博客文章翻译:https://github.com/apachecn/ml-mastery-zh

Tensorflow练习:斗大的熊猫http://blog.topspeedsnail.com/

数据集

自然语言处理(NLP)数据集整理

中文语料库1

中文公开聊天语料库

OpenKG.CN: 开放的中文知识图谱

自然语言处理 怎么获得数据集 中文语料集?

NER中文语料:https://github.com/yaleimeng/NER_corpus_chinese

CCKS2017电子病历实体标注:https://github.com/liuhuanyong/MedicalNamedEntityRecognition

100+ Chinese Word Vectors 上百种预训练中文词向量:https://github.com/Embedding/Chinese-Word-Vectors

天池瑞金知识图谱:https://github.com/ZhengZixiang/tianchi_ruijin_knowledge_graph

ChineseNLPCorpus:https://github.com/liuhuanyong/ChineseNLPCorpus

常用工具

re: 用re.sub做文本预处理

jieba:《jieba知识整理》

word2vec: 《word2vec知识整理》

文本去重:《文本去重方法知识整理》

pyhanlp:https://github.com/hankcs/pyhanlp

词云:

itchat:

Neo4j:知识图谱工具Py2Neo Neo4j简介及Py2Neo的用法

Levenshtein Distance:字符串相似度算法,纠正错误拼写

爬虫:《爬虫学习笔记》

BERT:

技术专题

文本表示:《文本表示知识整理》

应用场景

中文聊天机器人:《聊天机器人知识整理》

智能问答算法

问题细分

不同细分问题间存在交集,比如部分意图识别和情感分析问题也可归为文本分类问题来解决

NER (Named Entity Recognition,命名实体识别):

意图识别:《意图识别知识整理》

文本分类:《文本分类知识整理》

自然语言生成NLG:

比赛

优秀方案

Data Science Challenge / Competition Deadlines

Kaggle Past Solutions

Data competition Top Solution 数据竞赛Top解决方案开源整理

比赛总结

“达观杯”文本智能处理挑战赛

2018 CCL-中移在线客服领域用户意图分类

NLP项目列表

项目名称 中文名称 项目技术点 状态
Biosan-service-upgrade-2019 Biosan维修部维护效率提升项目 机器学习,文本挖掘 施工中
easyNER 任务指向型端到端NER框架 命名实体识别 施工中
fatface5 给女朋友用的微信聊天机器人搭建 语义理解,知识图谱,意图识别,API 施工中
douban-group-corpus-spider 简易豆瓣小组语料爬虫 爬虫 施工中