• Stars
    star
    353
  • Rank 117,515 (Top 3 %)
  • Language
    Jupyter Notebook
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

自然语言处理(NLP)教程,包括:词向量,词法分析,预训练语言模型,文本分类,文本语义匹配,信息抽取,翻译,对话。

nlp-tutorial

Contributions welcome GitHub contributors License Apache 2.0 python_vesion GitHub issues Wechat Group

自然语言处理(NLP)教程,包括:文本词向量,词法分析,预训练语言模型,文本分类,文本语义相似度计算,文本生成,实体识别,翻译,对话。

在本NLP教程包含了一些范例,涵盖了大多数常见NLP任务,是入门NLP和PyTorch的学习资料,也可以作为工作中上手NLP的基线参考实现。

Guide

nlp-tutorial的例子清单

  • 目录说明
目录 主题 简要说明
01_word_embedding 词向量模型 提供了一个利用领域数据集提升词向量效果的例子。
02_lexical_analysis 词法分析 词法分析任务的输入是一个句子,而输出是句子中的词边界和词性,这个例子基于LSTM和CRF实现。
03_language_model 语言模型 提供了多个语言模型,如bert, electra, elmo, gpt等等,也提供了支持语言模型在垂直了类领域数据上继续训练的工具包。
04_text_classification 文本分类 使用机器学习和深度模型如何完成文本分类任务。
05_text_matching 文本匹配 提供了SBERT的文本匹配算法实现,可以应用于搜索,推荐系统排序,召回等场景。
06_text_generation 文本生成 包含BERT面向生成任务的预训练+微调模型框架,以及一个GPT模型的应用。
07_information_extraction 信息抽取 提供了实体识别的基线实现。包含人名、地址名称的命名实体识别。
08_machine_translation 机器翻译 提供了一个带Attention机制的,基于LSTM的多层RNN Seq2Seq翻译模型。
09_dialogue 对话系统 提供了Bert的问答模型。
  • Notebook教程说明
Notebook Description
01_word_embedding/01_文本表示.ipynb 文本向量表示 Open In Colab
01_word_embedding/02_词向量Skip-gram模型.ipynb 实现skip-gram词向量模型 Open In Colab
01_word_embedding/03_Word2Vec.ipynb 基于gensim使用word2vec模型 Open In Colab
01_word_embedding/04_Doc2Vec.ipynb 基于gensim使用Doc2Vec模型 Open In Colab
01_word_embedding/05_Bert向量.ipynb 使用Bert模型取文本向量 Open In Colab
02_lexical_analysis/01_中文分词工具.ipynb 中文分词工具 Open In Colab
02_lexical_analysis/02_从头实现中文分词.ipynb 从头实现中文分词模型 Open In Colab
02_lexical_analysis/03_LSTM词性标注模型.ipynb LSTM词性标注模型 Open In Colab
03_language_model/01_语言模型.ipynb 从头实现RNN语言模型 Open In Colab
03_language_model/02_Transformer语言模型.ipynb 从头实现Transformer语言模型 Open In Colab
03_language_model/03_Bert完形填空.ipynb 基于transformers使用Bert模型做完形填空 Open In Colab
04_text_classification/01_机器学习分类模型.ipynb 基于scikit-learn训练LR等传统机器学习模型 Open In Colab
04_text_classification/02_深度学习分类模型.ipynb 训练PyTorch的IMDb情感分析模型 Open In Colab
04_text_classification/03_Bert文本分类.ipynb 使用Bert模型finetune分类任务 Open In Colab
04_text_classification/04_应用_姓名识别国籍.ipynb 从头实现RNN模型做人名的国籍分类 Open In Colab
05_text_matching/01_词粒度文本匹配.ipynb 基于字面和word2vec的词文本匹配 Open In Colab
05_text_matching/02_句粒度文本匹配.ipynb SentenceBert的句子相似度计算 Open In Colab
05_text_matching/03_篇章粒度文本匹配.ipynb LDA主题提取做Doc相似度计算 Open In Colab
06_text_generation/01_字符级人名生成.ipynb 从头实现Char-RNN做人名生成 Open In Colab
06_text_generation/02_预训练文本生成模型.ipynb 基于transformers的GPT、XLNet生成模型 Open In Colab
07_information_extraction/01_CRF实体识别模型.ipynb 从头实现CRF实体识别模型 Open In Colab
07_information_extraction/02_Bert实体识别.ipynb 基于transformers的Bert实体识别模型 Open In Colab
08_machine_translation/01_从头实现Seq2Seq模型.ipynb 从头实现Seq2Seq翻译模型 Open In Colab
08_machine_translation/02_transformer翻译模型.ipynb 从头实现Transformer翻译模型 Open In Colab
08_machine_translation/03_T5翻译模型.ipynb T5翻译模型 Open In Colab
09_dialogue/01_对话模型.ipynb 基于transformers的Bert问答模型 Open In Colab

Get Started

  • 使用Colab学习教程:

点击各教程的Open In Colab即可在Google Colab打开Notebook并运行。

  • 使用Jupyter Notebook学习教程:
  1. 下载Python:建议使用Anaconda,Python环境和包一键装好,Python3.7 版本
  2. 下载本项目:可以使用git clone,或者下载zip文件,解压到电脑
  3. 打开Jupyter Notebook:打开终端,cd到本项目所在的文件夹,执行:jupyter notebook ,浏览器打开01_word_embedding/01_文本表示.ipynb,跟随教程交互使用

安装

环境依赖

python >= 3.7

pip安装依赖

pip install -r requirements.txt

特色

本教程提供了多场景、多任务的NLP应用示例,基于PyTorch开发,动态库API简单易懂,调试方便,上手学习的同时可以用于生产研发。

教程内容涵盖了NLP基础、NLP应用以及文本相关的拓展应用如文本信息抽取、对话模型等。

使用

打开各个子目录文件夹(如01_word_embedding)即可学习使用,各子目录的任务可独立运行,相互之间无依赖。

Contact

  • Issue(建议):GitHub issues
  • 邮件我:xuming: [email protected]
  • 微信我:加我微信号:xuming624,进Python-NLP交流群,备注:姓名-公司名-NLP

Cite

如果你在研究中使用了nlp-tutorial,请按如下格式引用:

@software{nlp-tutorial,
  author = {Xu Ming},
  title = {nlp-tutorial: NLP Tutorial for Beginners},
  year = {2021},
  url = {https://github.com/shibing624/nlp-tutorial},
}

License

授权协议为 The Apache License 2.0,可免费用做商业用途。请在产品说明中附加nlp-tutorial的链接和授权协议。

Contribute

项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目,在提交之前,注意以下两点:

  • 在本地进行单元测试
  • 确保所有单测都是通过的

之后即可提交PR。

Reference

  1. nlp-in-python-tutorial
  2. PaddleNLP

More Repositories

1

pycorrector

pycorrector is a toolkit for text error correction. 文本纠错,实现了Kenlm,T5,MacBERT,ChatGLM3,LLaMA等模型应用在纠错场景,开箱即用。
Python
5,202
star
2

text2vec

text2vec, text to vector. 文本向量表征工具,把文本转化为向量矩阵,实现了Word2Vec、RankBM25、Sentence-BERT、CoSENT等文本表征、文本相似度计算模型,开箱即用。
Python
4,059
star
3

MedicalGPT

MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型,实现了包括增量预训练(PT)、有监督微调(SFT)、RLHF、DPO、ORPO。
Python
2,564
star
4

python-tutorial

Python实用教程,包括:Python基础,Python高级特性,面向对象编程,多线程,数据库,数据科学,Flask,爬虫开发教程。
Jupyter Notebook
1,805
star
5

similarity

similarity: Text similarity calculation Toolkit for Java. 文本相似度计算工具包,java编写,可用于文本相似度计算、情感分析等任务,开箱即用。
Java
1,337
star
6

textgen

TextGen: Implementation of Text Generation models, include LLaMA, BLOOM, GPT2, BART, T5, SongNet and so on. 文本生成模型,实现了包括LLaMA,ChatGLM,BLOOM,GPT2,Seq2Seq,BART,T5,UDA等模型的训练和预测,开箱即用。
Python
893
star
7

similarities

Similarities: a toolkit for similarity calculation and semantic search. 相似度计算、匹配搜索工具包,支持亿级数据文搜文、文搜图、图搜图,python3开发,开箱即用。
Python
597
star
8

ChatPDF

RAG for Local LLM, chat with PDF/doc/txt files, ChatPDF
Python
435
star
9

pytextclassifier

pytextclassifier is a toolkit for text classification. 文本分类,LR,Xgboost,TextCNN,FastText,TextRNN,BERT等分类模型实现,开箱即用。
Python
431
star
10

parrots

Automatic Speech Recognition(ASR), Text-To-Speech(TTS) engine. 中英语音识别、多角色语音合成,支持多语言,准确率高
Python
423
star
11

dialogbot

dialogbot, provide search-based dialogue, task-based dialogue and generative dialogue model. 对话机器人,基于问答型对话、任务型对话、聊天型对话等模型实现,支持网络检索问答,领域知识问答,任务引导问答,闲聊问答,开箱即用。
Python
304
star
12

pke_zh

pke_zh, python keyphrase extraction for chinese(zh). 中文关键词或关键句提取工具,实现了KeyBert、PositionRank、TopicRank、TextRank等算法,开箱即用。
Python
155
star
13

lmft

ChatGLM-6B fine-tuning.
Python
137
star
14

nerpy

🌈 NERpy: Implementation of Named Entity Recognition using Python. 命名实体识别工具,支持BertSoftmax、BertSpan等模型,开箱即用。
Python
98
star
15

pysenti

Chinese Sentiment Classification Tool. 情感极性分类,基于知网、清华、BosonNLP情感词典,易扩展,基准方法,开箱即用。
Python
74
star
16

companynameparser

company name parser, extract company name brand. 中文公司名称分词工具,支持公司名称中的地名,品牌名(主词),行业词,公司名后缀提取。
Python
71
star
17

ChatPilot

ChatPilot: 实现AgentChat对话,支持Google搜索、文件网址对话(RAG)、代码解释器功能,复现了Kimi Chat(文件,拖进来;网址,发出来)。
Svelte
63
star
18

chatgpt-webui

ChatGPT WebUI using gradio. 给 LLM 对话和检索知识问答RAG提供一个简单好用的Web UI界面
Python
61
star
19

judger

自动作文评分工具,支持中文、英文作文智能评分,支持评分模型自训练,支持WEKA处理模型数据,支持自定义评分算法。java开发。
Roff
52
star
20

CodeAssist

CodeAssist is an advanced code completion tool that provides high-quality code completions for Python, Java, C++ and so on. CodeAssist 是一个高级代码补全工具,高质量为 Python、Java 和 C++ 补全代码。
Python
51
star
21

relext

RelExt: A Tool for Relation Extraction from Text. 文本实体关系抽取工具。
Python
44
star
22

text-feature

文本特征提取,适用于小说,论文,议论文等文本,提取词语、句子、依存关系等特征。python开发。
Python
37
star
23

rater

rater, recommender systems. 推荐模型,包括:DeepFM,Wide&Deep,DIN,DeepWalk,Node2Vec等模型实现,开箱即用。
Python
36
star
24

github-hot

Tracking the hot Github repos and update daily 每天自动追踪Github热门项目
Python
26
star
25

labelit

labelit, label tool with active learning, for classification task. 自动标注,基于主动学习,边标注边学习,减少人工标注量。
Python
26
star
26

title-generator

Automatic Text Summarization and Title Generation.
Python
24
star
27

pinyin-tokenizer

pinyintokenizer, 拼音分词器,将连续的拼音切分为单字拼音列表。
Python
19
star
28

case-analysis

NLP之病历分析:从病历文本之中提取关键信息,便于后续分析处理。
Java
19
star
29

EssaySocring

英文作文自动评分系统,支持评分模型自训练,支持WEKA处理模型数据,支持自定义评分算法。Java开发。
Roff
16
star
30

crf-seg

crf-seg:用于生产环境的中文分词处理工具,可自定义语料、可自定义模型、架构清晰,分词效果好。java编写。
Java
13
star
31

authorship-identification

【今日头条】文本作者身份识别比赛
Jupyter Notebook
9
star
32

text2vec-service

Service for Bert model to Vector. 高效的文本转向量(Text-To-Vector)服务,支持GPU多卡、多worker、多客户端调用,开箱即用。
Python
9
star
33

fake-news-detector

Fake News Detection Competition
Python
8
star
34

ChatGPT-API-server

build a python server for ChatGPT API.
Python
7
star
35

zh-normalization

Chinese(zh) sentence NSW(Non-Standard-Word) Normalization
Python
5
star
36

nlpcommon

NLP common tools.
Python
5
star
37

cpp-tutorial

C++开发实例教程,基础,开源库进阶,高级技巧。
C++
4
star
38

text2vec-encoder

**Text2vecEncoder** wraps the text2vec model with jina. It encodes text data into dense vectors.
Python
4
star
39

cvnet

have fun with image AI
Jupyter Notebook
4
star
40

BlogDemo

我的csdn博客中使用的代码,主要是算法。
Java
3
star
41

sbert

sbert, sentence bert.
Python
2
star
42

Diffusion-Tuning

Diffusion-Tuning: Training Your Own Diffusion model with custom dataset.
Python
2
star
43

actions

Actions: Agent pipelines.
2
star
44

tools

tools
JavaScript
2
star
45

pyweb

Web server use tornado.
Python
1
star
46

html5-demos

Use the html5 to show funny web demos
JavaScript
1
star
47

shibing624

1
star
48

phrase-search

短语搜索,支持公司名称、地址名称等短语的搜索,支持自定义排序、拼音处理,内置jetty提供web接口。java编写。
Java
1
star