Skip to content

Commit 881ce01

Browse files
authored
Dev0.4.0 (#149)
* 1. CRF增加支持bmeso类型的tag 2. vocabulary中增加注释 * BucketSampler增加一条错误检测 * 1.修改ClipGradientCallback的bug;删除LRSchedulerCallback中的print,之后应该传入pbar进行打印;2.增加MLP注释 * update MLP module * 增加metric注释;修改trainer save过程中的bug * Update README.md fix tutorial link * Add ENAS (Efficient Neural Architecture Search) * add ignore_type in DataSet.add_field * * AutoPadder will not pad when dtype is None * add ignore_type in DataSet.apply * 修复fieldarray中padder潜在bug * 修复crf中typo; 以及可能导致数值不稳定的地方 * 修复CRF中可能存在的bug * change two default init arguments of Trainer into None * Changes to Callbacks: * 给callback添加给定几个只读属性 * 通过manager设置这些属性 * 代码优化,减轻@Transfer的负担 * * 将enas相关代码放到automl目录下 * 修复fast_param_mapping的一个bug * Trainer添加自动创建save目录 * Vocabulary的打印,显示内容 * * 给vocabulary添加遍历方法 * 修复CRF为负数的bug * add SQuAD metric * add sigmoid activate function in MLP * - add star transformer model - add ConllLoader, for all kinds of conll-format files - add JsonLoader, for json-format files - add SSTLoader, for SST-2 & SST-5 - change Callback interface - fix batch multi-process when killed - add README to list models and their performance * - fix test * - fix callback & tests * - update README * 修改部分bug;调整callback * 准备发布0.4.0版本“ * update readme * support parallel loss * 防止多卡的情况导致无法正确计算loss“ * update advance_tutorial jupyter notebook * 1. 在embedding_loader中增加新的读取函数load_with_vocab(), load_without_vocab, 比之前的函数改变主要在(1)不再需要传入embed_dim(2)自动判断当前是word2vec还是glove. 2. vocabulary增加from_dataset(), index_dataset()函数。避免需要多行写index dataset的问题。 3. 在utils中新增一个cache_result()修饰器,用于cache函数的返回值。 4. callback中新增update_every属性 * 1.DataSet.apply()报错时提供错误的index 2.Vocabulary.from_dataset(), index_dataset()提供报错时的vocab顺序 3.embedloader在embed读取时遇到不规则的数据跳过这一行. * update attention * doc tools * fix some doc errors * 修改为中文注释,增加viterbi解码方法 * 样例版本 * - add pad sequence for lstm - add csv, conll, json filereader - update dataloader - remove useless dataloader - fix trainer loss print - fix tests * - fix test_tutorial * 注释增加 * 测试文档 * 本地暂存 * 本地暂存 * 修改文档的顺序 * - add document * 本地暂存 * update pooling * update bert * update documents in MLP * update documents in snli * combine self attention module to attention.py * update documents on losses.py * 对DataSet的文档进行更新 * update documents on metrics * 1. 删除了LSTM中print的内容; 2. 将Trainer和Tester的use_cuda修改为了device; 3.补充Trainer的文档 * 增加对Trainer的注释 * 完善了trainer,callback等的文档; 修改了部分代码的命名以使得代码从文档中隐藏 * update char level encoder * update documents on embedding.py * - update doc * 补充注释,并修改部分代码 * - update doc - add get_embeddings * 修改了文档配置项 * 修改embedding为init_embed初始化 * 1.增加对Trainer和Tester的多卡支持; * - add test - fix jsonloader * 删除了注释教程 * 给 dataset 增加了get_field_names * 修复bug * - add Const - fix bugs * 修改部分注释 * - add model runner for easier test models - add model tests * 修改了 docs 的配置和架构 * 修改了核心部分的一大部分文档,TODO: 1. 完善 trainer 和 tester 部分的文档 2. 研究注释样例与测试 * core部分的注释基本检查完成 * 修改了 io 部分的注释 * 全部改为相对路径引用 * 全部改为相对路径引用 * small change * 1. 从安装文件中删除api/automl的安装 2. metric中存在seq_len的bug 3. sampler中存在命名错误,已修改 * 修复 bug :兼容 cpu 版本的 PyTorch TODO:其它地方可能也存在类似的 bug * 修改文档中的引用部分 * 把 tqdm.autonotebook 换成tqdm.auto * - fix batch & vocab * 上传了文档文件 *.rst * 上传了文档文件和若干 TODO * 讨论并整合了若干模块 * core部分的测试和一些小修改 * 删除了一些冗余文档 * update init files * update const files * update const files * 增加cnn的测试 * fix a little bug * - update attention - fix tests * 完善测试 * 完成快速入门教程 * 修改了sequence_modeling 命名为 sequence_labeling 的文档 * 重新 apidoc 解决改名的遗留问题 * 修改文档格式 * 统一不同位置的seq_len_to_mask, 现统一到core.utils.seq_len_to_mask * 增加了一行提示 * 在文档中展示 dataset_loader * 提示 Dataset.read_csv 会被 CSVLoader 替换 * 完成 Callback 和 Trainer 之间的文档 * index更新了部分 * 删除冗余的print * 删除用于分词的metric,因为有可能引起错误 * 修改文档中的中文名称 * 完成了详细介绍文档 * tutorial 的 ipynb 文件 * 修改了一些介绍文档 * 修改了 models 和 modules 的主页介绍 * 加上了 titlesonly 这个设置 * 修改了模块文档展示的标题 * 修改了 core 和 io 的开篇介绍 * 修改了 modules 和 models 开篇介绍 * 使用 .. todo:: 隐藏了可能被抽到文档中的 TODO 注释 * 修改了一些注释 * delete an old metric in test * 修改 tutorials 的测试文件 * 把暂不发布的功能移到 legacy 文件夹 * 删除了不能运行的测试 * 修改 callback 的测试文件 * 删除了过时的教程和测试文件 * cache_results 参数的修改 * 修改 io 的测试文件; 删除了一些过时的测试 * 修复bug * 修复无法通过test_utils.py的测试 * 修复与pytorch1.1中的padsequence的兼容问题; 修改Trainer的pbar * 1. 修复metric中的bug; 2.增加metric测试 * add model summary * 增加别名 * 删除encoder中的嵌套层 * 修改了 core 部分 import 的顺序,__all__ 暴露的内容 * 修改了 models 部分 import 的顺序,__all__ 暴露的内容 * 修改了文件名 * 修改了 modules 模块的__all__ 和 import * fix var runn * 增加vocab的clear方法 * 一些符合 PEP8 的微调 * 更新了cache_results的例子 * 1. 对callback中indices潜在None作出提示;2.DataSet支持通过List进行index * 修改了一个typo * 修改了 README.md * update documents on bert * update documents on encoder/bert * 增加一个fitlog callback,实现与fitlog实验记录 * typo * - update dataset_loader * 增加了到 fitlog 文档的链接。 * 增加了 DataSet Loader 的文档 * - add star-transformer reproduction
1 parent 863a99f commit 881ce01

File tree

206 files changed

+13065
-41275
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+13065
-41275
lines changed

MANIFEST.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
include requirements.txt
2+
include LICENSE
3+
include README.md
4+
prune test/
5+
prune reproduction/
6+
prune fastNLP/api
7+
prune fastNLP/automl

README.md

Lines changed: 61 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,87 +6,108 @@
66
![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)
77
[![Documentation Status](https://readthedocs.org/projects/fastnlp/badge/?version=latest)](http://fastnlp.readthedocs.io/?badge=latest)
88

9-
FastNLP is a modular Natural Language Processing system based on PyTorch, built for fast development of NLP models.
9+
fastNLP 是一款轻量级的 NLP 处理套件。你既可以使用它快速地完成一个命名实体识别(NER)、中文分词或文本分类任务; 也可以使用他构建许多复杂的网络模型,进行科研。它具有如下的特性:
10+
11+
- 统一的Tabular式数据容器,让数据预处理过程简洁明了。内置多种数据集的DataSet Loader,省去预处理代码。
12+
- 各种方便的NLP工具,例如预处理embedding加载; 中间数据cache等;
13+
- 详尽的中文文档以供查阅;
14+
- 提供诸多高级模块,例如Variational LSTM, Transformer, CRF等;
15+
- 封装CNNText,Biaffine等模型可供直接使用;
16+
- 便捷且具有扩展性的训练器; 提供多种内置callback函数,方便实验记录、异常捕获等。
17+
18+
19+
## 安装指南
20+
21+
fastNLP 依赖如下包:
22+
23+
+ numpy
24+
+ torch>=0.4.0
25+
+ tqdm
26+
+ nltk
27+
28+
其中torch的安装可能与操作系统及 CUDA 的版本相关,请参见 PyTorch 官网 。
29+
在依赖包安装完成的情况,您可以在命令行执行如下指令完成安装
30+
31+
```shell
32+
pip install fastNLP
33+
```
34+
35+
36+
## 内置组件
37+
38+
大部分用于的 NLP 任务神经网络都可以看做由编码(encoder)、聚合(aggregator)、解码(decoder)三种模块组成。
39+
40+
41+
![](./docs/source/figures/text_classification.png)
42+
43+
fastNLP 在 modules 模块中内置了三种模块的诸多组件,可以帮助用户快速搭建自己所需的网络。 三种模块的功能和常见组件如下:
1044

11-
A deep learning NLP model is the composition of three types of modules:
1245
<table>
1346
<tr>
14-
<td><b> module type </b></td>
15-
<td><b> functionality </b></td>
16-
<td><b> example </b></td>
47+
<td><b> 类型 </b></td>
48+
<td><b> 功能 </b></td>
49+
<td><b> 例子 </b></td>
1750
</tr>
1851
<tr>
1952
<td> encoder </td>
20-
<td> encode the input into some abstract representation </td>
53+
<td> 将输入编码为具有具 有表示能力的向量 </td>
2154
<td> embedding, RNN, CNN, transformer
2255
</tr>
2356
<tr>
2457
<td> aggregator </td>
25-
<td> aggregate and reduce information </td>
58+
<td> 从多个向量中聚合信息 </td>
2659
<td> self-attention, max-pooling </td>
2760
</tr>
2861
<tr>
2962
<td> decoder </td>
30-
<td> decode the representation into the output </td>
63+
<td> 将具有某种表示意义的 向量解码为需要的输出 形式 </td>
3164
<td> MLP, CRF </td>
3265
</tr>
3366
</table>
3467

35-
For example:
36-
37-
![](docs/source/figures/text_classification.png)
38-
39-
## Requirements
40-
41-
- Python>=3.6
42-
- numpy>=1.14.2
43-
- torch>=0.4.0
44-
- tensorboardX
45-
- tqdm>=4.28.1
4668

69+
## 完整模型
70+
fastNLP 为不同的 NLP 任务实现了许多完整的模型,它们都经过了训练和测试。
4771

48-
## Resources
72+
你可以在以下两个地方查看相关信息
73+
- [介绍](reproduction/)
74+
- [源码](fastNLP/models/)
4975

50-
- [Tutorials](https://github.com/fastnlp/fastNLP/tree/master/tutorials)
51-
- [Documentation](https://fastnlp.readthedocs.io/en/latest/)
52-
- [Source Code](https://github.com/fastnlp/fastNLP)
53-
54-
55-
## Installation
56-
Run the following commands to install fastNLP package.
57-
```shell
58-
pip install fastNLP
59-
```
76+
## 项目结构
6077

78+
![](./docs/source/figures/workflow.png)
6179

62-
## Project Structure
80+
fastNLP的大致工作流程如上图所示,而项目结构如下:
6381

6482
<table>
6583
<tr>
6684
<td><b> fastNLP </b></td>
67-
<td> an open-source NLP library </td>
68-
</tr>
69-
<tr>
70-
<td><b> fastNLP.api </b></td>
71-
<td> APIs for end-to-end prediction </td>
85+
<td> 开源的自然语言处理库 </td>
7286
</tr>
7387
<tr>
7488
<td><b> fastNLP.core </b></td>
75-
<td> data representation & train/test procedure </td>
89+
<td> 实现了核心功能,包括数据处理组件、训练器、测速器等 </td>
7690
</tr>
7791
<tr>
7892
<td><b> fastNLP.models </b></td>
79-
<td> a collection of NLP models </td>
93+
<td> 实现了一些完整的神经网络模型 </td>
8094
</tr>
8195
<tr>
8296
<td><b> fastNLP.modules </b></td>
83-
<td> a collection of PyTorch sub-models/components/wheels </td>
97+
<td> 实现了用于搭建神经网络模型的诸多组件 </td>
8498
</tr>
8599
<tr>
86100
<td><b> fastNLP.io </b></td>
87-
<td> readers & savers </td>
101+
<td> 实现了读写功能,包括数据读入,模型读写等 </td>
88102
</tr>
89103
</table>
90104

105+
## 参考资源
106+
107+
- [教程](https://github.com/fastnlp/fastNLP/tree/master/tutorials)
108+
- [文档](https://fastnlp.readthedocs.io/en/latest/)
109+
- [源码](https://github.com/fastnlp/fastNLP)
110+
111+
91112

92113
*In memory of @FengZiYjun. May his soul rest in peace. We will miss you very very much!*

docs/Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
# You can set these variables from the command line.
55
SPHINXOPTS =
6+
SPHINXAPIDOC = sphinx-apidoc
67
SPHINXBUILD = sphinx-build
78
SPHINXPROJ = fastNLP
89
SOURCEDIR = source
@@ -12,6 +13,12 @@ BUILDDIR = build
1213
help:
1314
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
1415

16+
apidoc:
17+
$(SPHINXAPIDOC) -efM -o source ../$(SPHINXPROJ)
18+
19+
server:
20+
cd build/html && python -m http.server
21+
1522
.PHONY: help Makefile
1623

1724
# Catch-all target: route all unknown targets to Sphinx using the new

docs/source/conf.py

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#
1515
import os
1616
import sys
17+
1718
sys.path.insert(0, os.path.abspath('../../'))
1819

1920
# -- Project information -----------------------------------------------------
@@ -23,10 +24,9 @@
2324
author = 'xpqiu'
2425

2526
# The short X.Y version
26-
version = '0.2'
27+
version = '0.4'
2728
# The full version, including alpha/beta/rc tags
28-
release = '0.2'
29-
29+
release = '0.4'
3030

3131
# -- General configuration ---------------------------------------------------
3232

@@ -42,9 +42,15 @@
4242
'sphinx.ext.viewcode',
4343
'sphinx.ext.autosummary',
4444
'sphinx.ext.mathjax',
45-
45+
'sphinx.ext.todo'
4646
]
4747

48+
autodoc_default_options = {
49+
'member-order': 'bysource',
50+
'special-members': '__init__',
51+
'undoc-members': True,
52+
}
53+
4854
# Add any paths that contain templates here, relative to this directory.
4955
templates_path = ['_templates']
5056

@@ -62,17 +68,16 @@
6268
#
6369
# This is also used if you do content translation via gettext catalogs.
6470
# Usually you set "language" from the command line for these cases.
65-
language = None
71+
language = "zh_CN"
6672

6773
# List of patterns, relative to source directory, that match files and
6874
# directories to ignore when looking for source files.
6975
# This pattern also affects html_static_path and html_extra_path .
70-
exclude_patterns = []
76+
exclude_patterns = ['modules.rst']
7177

7278
# The name of the Pygments (syntax highlighting) style to use.
7379
pygments_style = 'sphinx'
7480

75-
7681
# -- Options for HTML output -------------------------------------------------
7782

7883
# The theme to use for HTML and HTML Help pages. See the documentation for
@@ -84,7 +89,10 @@
8489
# further. For a list of options available for each theme, see the
8590
# documentation.
8691
#
87-
# html_theme_options = {}
92+
html_theme_options = {
93+
'collapse_navigation': False,
94+
'titles_only': True
95+
}
8896

8997
# Add any paths that contain custom static files (such as style sheets) here,
9098
# relative to this directory. They are copied after the builtin static files,
@@ -107,22 +115,21 @@
107115
# Output file base name for HTML help builder.
108116
htmlhelp_basename = 'fastNLPdoc'
109117

110-
111118
# -- Options for LaTeX output ------------------------------------------------
112119

113120
latex_elements = {
114121
# The paper size ('letterpaper' or 'a4paper').
115122
#
116123
# 'papersize': 'letterpaper',
117-
124+
118125
# The font size ('10pt', '11pt' or '12pt').
119126
#
120127
# 'pointsize': '10pt',
121-
128+
122129
# Additional stuff for the LaTeX preamble.
123130
#
124131
# 'preamble': '',
125-
132+
126133
# Latex figure (float) alignment
127134
#
128135
# 'figure_align': 'htbp',
@@ -136,7 +143,6 @@
136143
'xpqiu', 'manual'),
137144
]
138145

139-
140146
# -- Options for manual page output ------------------------------------------
141147

142148
# One entry per manual page. List of tuples
@@ -146,7 +152,6 @@
146152
[author], 1)
147153
]
148154

149-
150155
# -- Options for Texinfo output ----------------------------------------------
151156

152157
# Grouping the document tree into Texinfo files. List of tuples
@@ -159,4 +164,14 @@
159164
]
160165

161166

162-
# -- Extension configuration -------------------------------------------------
167+
# -- Extension configuration -------------------------------------------------
168+
def maybe_skip_member(app, what, name, obj, skip, options):
169+
if name.startswith("_"):
170+
return True
171+
if obj.__doc__ is None:
172+
return True
173+
return False
174+
175+
176+
def setup(app):
177+
app.connect('autodoc-skip-member', maybe_skip_member)

docs/source/fastNLP.api.rst

Lines changed: 0 additions & 36 deletions
This file was deleted.

docs/source/fastNLP.core.batch.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fastNLP.core.batch
2+
==================
3+
4+
.. automodule:: fastNLP.core.batch
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fastNLP.core.callback
2+
=====================
3+
4+
.. automodule:: fastNLP.core.callback
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

docs/source/fastNLP.core.const.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fastNLP.core.const
2+
==================
3+
4+
.. automodule:: fastNLP.core.const
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fastNLP.core.dataset
2+
====================
3+
4+
.. automodule:: fastNLP.core.dataset
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

docs/source/fastNLP.core.field.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fastNLP.core.field
2+
==================
3+
4+
.. automodule:: fastNLP.core.field
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

0 commit comments

Comments
 (0)