模型修改自 Deep Text Corrector
训练模型:
python3 train.py
使用模型:
python3 test.py
纠正英文句子中的6种错误
- 介词错误
- 名词错误
- 冠词错误
- 动词错误
- 谓语错误
- 标点错误
- Python 3.6
- TensorFlow 1.10
- NLTK 3.3
- NumPy 1.13
主要**是 sequence-to-sequence + attention mechanism,细节可参见 Bahdanau et al., 2014
encoder 和 decoder 的 RNN 每层大小和层数: 512, 4
RNN 单元:LSTM
最大单词(token)数(词典大小):2000
因使用了一种处理OOV词(词典外的词)的策略,可以使用较小的词典,可参见 Addressing the Rare Word Problem in NMT
-
- 电影字幕语料,可认为是没有语法错误的语料,需要生成有错误的句子以得到训练集。
-
- 有错误标注,可直接用于训练。
基本**是对正确的句子加入随机“噪声”来得到训练数据,分别针对下面不同情况进行处理
- 介词、冠词、谓语、标点:将其随机替换成其他相应的词或去掉
- 动词:随机改变时态
对原句子和纠正后的句子分别用NLTK标记各单词的词性,然后贪心地找出不同的(被纠正的)词,最后根据其词性确定错误的类型。
- corrector/corrector.py 定义了Corrector 类,封装了训练和对句子进行纠正的函数,调用方法可参考 train.py 和 test.py
- corrector/data_reader.py, text_corrector_data_readers.py 实现了对各数据集的读取和处理
- corrector/text_corrector_models.py 实现seq2seq模型
- corrector/seq2seq.py 旧版本tf中的seq2seq包
- corrector/noise.py 提供了对文本添加噪声的函数