深度模型使用說明
Install
- 全自動安裝:pip install pycorrector
- 半自動安裝:
git clone https://github.com/shibing624/pycorrector.git
cd pycorrector
python setup.py install
通過以上兩種方法的任何一種完成安裝都可以。如果不想安裝,可以下載github源碼包,安裝下面依賴再使用。
安裝依賴
- kenlm安裝
pip install https://github.com/kpu/kenlm/archive/master.zip
- 其他庫包安裝
pip install -r requirements.txt
安裝依賴
pip install -r requirements-dev.txt
介紹
本項目的初衷之一是比對、共享各種文本糾錯方法,拋磚引玉的作用,如果對大家在文本糾錯任務上有一點小小的啓發就是我莫大的榮幸了。
主要使用了多種深度模型應用於文本糾錯任務,分別是前面模型
小節介紹的conv_seq2seq
、seq2seq_attention
、
transformer
、bert
、electra
,各模型方法內置於pycorrector
文件夾下,有README.md
詳細指導,各模型可獨立運行,相互之間無依賴。
使用方法
各模型均可獨立的預處理數據、訓練、預測,下面以其中seq2seq_attention
爲例:
seq2seq_attention 模型使用示例:
配置
通過修改config.py
。
數據預處理
cd seq2seq_attention
# 數據預處理
python preprocess.py
自動新建文件夾output,在output下生成train.txt
和test.txt
文件,以TAB("\t")間隔錯誤文本和糾正文本,文本以空格切分詞,文件內容示例:
希 望 少 吸 煙 。 希 望 煙 民 們 少 吸 煙 。
以 前 , 包 括 中 國 , 我 國 也 是 。 以 前 , 不 僅 中 國 , 我 國 也 是 。
我 現 在 好 得 多 了 。 我 現 在 好 多 了 。
訓練
python train.py
訓練過程截圖:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1l5xopBc-1593252818916)(./docs/git_image/seq2seq_train.png)]
預測
python infer.py
預測輸出效果樣例:
input: 少先隊員因該給老人讓坐 output: 少先隊員因該給老人讓座
input: 少先隊員應該給老人讓坐 output: 少先隊員應該給老人讓座
input: 沒有解決這個問題, output: 沒有解決這個問題,,
input: 由我起開始做。 output: 由我起開始做
input: 由我起開始做 output: 由我開始做
PS:
- 如果訓練數據太少(不足萬條),深度模型擬合不足,會出現預測結果全爲
unk
的情況,解決方法:增大訓練樣本集,使用下方提供的糾錯熟語料(nlpcc2018+hsk,130萬對句子)測試。 - 深度模型訓練耗時長,有GPU儘量用GPU,加速訓練,節省時間。
自定義語言模型
語言模型對於糾錯步驟至關重要,當前默認使用的是從千兆中文文本訓練的中文語言模型zh_giga.no_cna_cmn.prune01244.klm(2.8G)。
大家可以用中文維基(繁體轉簡體,pycorrector.utils.text_utils下有此功能)等語料數據訓練通用的語言模型,或者也可以用專業領域語料訓練更專用的語言模型。更適用的語言模型,對於糾錯效果會有比較好的提升。
- kenlm語言模型訓練工具的使用,請見博客:http://blog.csdn.net/mingzai624/article/details/79560063
- 附上訓練語料<人民日報2014版熟語料>,包括:
1)標準人工切詞及詞性數據people2014.tar.gz,
2)未切詞文本數據people2014_words.txt,
3)kenlm訓練字粒度語言模型文件及其二進制文件people2014corpus_chars.arps/klm,
4)kenlm詞粒度語言模型文件及其二進制文件people2014corpus_words.arps/klm。
人民日報2014版熟語料,網盤鏈接:https://pan.baidu.com/s/1971a5XLQsIpL0zL0zxuK2A 密碼:uc11。尊重版權,傳播請註明出處。
中文糾錯數據集
- NLPCC 2018 GEC官方數據集NLPCC2018-GEC,
訓練集trainingdata[解壓後114.5MB],該數據格式是原始文本,未做切詞處理。 - 漢語水平考試(HSK)和lang8原始平行語料HSK+Lang8[190MB],該數據集已經切詞,可用作數據擴增
- 以上語料,再加上CGED16、CGED17、CGED18的數據,經過以字切分,繁體轉簡體,打亂數據順序的預處理後,生成用於糾錯的熟語料(nlpcc2018+hsk),網盤鏈接:https://pan.baidu.com/s/1BkDru60nQXaDVLRSr7ktfA 密碼:m6fg [130萬對句子,215MB]