NLP模型也有“老師”了!裝上這個開源庫,1毫秒糾正語法錯誤
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
當NLP模型產生了語法錯誤,怎么辦?
比如,He wants that you send him an email.
沒關系,現在可以像小時候的英語老師,改作文一樣簡單。
只要裝上一個專門糾正語法錯誤的庫就可以,還是毫秒鐘就可揪出來的那種。
這不,把“that”改成“to”不就可以了嗎~
糾正過來就是:
He wants you to send him an email.
(不會真有人看不出其中的語法錯誤吧)
再比如這句。
I can due his homework.
應該變成:I can do his homework.

好像這些語法錯誤,都有點太過明顯了。那就來復雜一點的。
Thanks for your’s and Lucy’s help.
系統就會改成:
Thanks for yours and Lucy’s help.

這就是最近一位AI專業本科生Benjamin Minixhofer,利用假期時間開發出來的一款快速糾正語法錯誤的庫NLPRule。
它是由Rust編寫的一個基于LanguageTool語法規則的逆向工程。
LanguageTool是一款開放源代碼校對軟件,適用于英語,法語,德語,波蘭語,俄語以及20多種其他語言,它可以發現許多拼寫檢查器無法檢測到的錯誤。
一經發出,就在Reddit上獲得了200+的熱度。

如何實現?
NLPRule是將語法規則與ML模型結合起來,主要應用于NLP的預處理和NLG的后處理。
在作者看來,使用基于語法規則的方法有兩大優勢。
一是速度。作者使用第8代英特爾,糾正一個句子只需要不到1毫秒的時間。
二是語法錯誤的訓練數據極度稀少,ML模型無法處理。
比如,就像這句“It is enough for all intensive purposes. ”
就包含了一個錯誤。除非特別說明,ML模型基本上不能糾正這個錯誤,因為它幾乎不會出現在其訓練數據當中。
而若是放在其他語言數據中,肯定會比英語更少。
比如,中文。
作者創建這個庫的目的在于創建一個快速、輕量級的引擎來運行自然語言規則,無需依賴JVM(Java虛擬運行環境)速度、內存的影響。
目前,這個庫支持英語和德語。

具體安裝可分成如下四個步驟,詳細可戳文末鏈接。

在GPT-2進行文本測試
接著,作者就嘗試用GPT-2生成的文本來測試,結果產生了大量的改進建議。

比如語法錯誤。
Before: …t out, as a condition of its being operated. Each lock keeper should ensure >that all locks are operated and tha…
After: …t out, as a condition of its being operated. Each lockkeeper should ensure that all locks are operated and tha…
Message: This noun is normally spelled as one word.
Type: grammar

再比如拼寫錯誤。
Before: …he Z-machine version (in the standardised format) is comprised of 32 (in total) >bytes, one per line. …
After: …he Z-machine version (in the standardised format) comprises 32 (in total) bytes, one per line. …
Message: Did you mean comprises or consists of or is composed of?
Type: misspelling

一經發出,不少網友直呼:Fantastic!

也有網友想到,如果跟BERT或者其他Transformer模型結合起來,會不會生成更好的句子呢?

想要了解更多細節,吶~傳送門送上!