科技 新浪科技 北理工校友發明文言文「填詞大師」,斷句、造詞都能做,高考文言文滿分靠它了

北理工校友發明文言文「填詞大師」,斷句、造詞都能做,高考文言文滿分靠它了

原標題:北理工校友發明文言文「填詞大師」,斷句、造詞都能做,高考文言文滿分靠它了

蕭簫 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

都說GPT-3能接人話,補充上下文關係,中文版的「填詞大師」你見過沒?

3eae-kefmphc3848011.png

不僅是中文版,這個「填詞大師」甚至還是從古代穿越過來的文言文版。

這是兩個來自北理工的小哥做出的模型GuwenBERT,經過訓練后的模型,不僅能自動幫助文言文斷句,還能幫你思考被遮住的詞語到底是什麼。(真沒有用原詩騙你)

843c-kefmphc3848012.png

要是這個模型去參加高考,文言文斷句、詩詞背誦部分,豈不是都能拿滿分?

來看看它是怎麼被做出來的~

文言文版BERT,填詞斷句樣樣通

GuwenBERT,是在中文BERT-wwm模型的基礎上,利用古文數據集訓練出來的。

ceec-kefmphc3848042.png

中文BERT-wwm(基於全詞遮罩技術的中文預訓練模型)是哈工大和訊飛聯合發表的模型,在中文BERT的基礎上,修改了預訓練階段的訓練樣本生成策略。

全詞遮罩(Whole Word Masking),指原來的遮罩(mask)只隨機遮一個字,現在則會對一個詞的所有字進行遮罩。

c881-kefmphc3848094.png

但中文BERT-wwm,是針對現代漢語訓練的模型。

經受過文言文「毒打」的小夥伴都知道,古文不僅詞法與現代漢語中多存在不同,而且沒有斷句,理解起來費神費力。

想要在大量古籍中按圖索驥,快速查找到想要的資料,更是難上加難。

為此,GuwenBERT橫空出世,根據已有的現代漢語模型,用古文數據集訓練出了文言文預訓練模型。預訓練的過程是這樣的:

ebcf-kefmphc3848126.png

目前,這個模型已經給出了樣本,在線就能一試文言文版BERT的功力。

調戲Demo的方法是,隨便給一句古文,用[MASK]遮住其中一個字、或是一個標點,讓GuwenBERT來猜猜看,你遮住的到底是什麼。

例如,遮住一個逗號,看文言文會不會斷句。BERT在思考了不到一秒后,就給出了自己的答案:

a4c2-kefmphc3848127.png

至於填詞方面,文言文BERT的表現也很優秀,在思考了一會後,填上了正確的詞語。

8d3c-kefmphc3848151.png

是不是感覺有點簡單?我們用課文來試一下:

3c09-kefmphc3848150.png

效果竟然也不錯,要是這樣的理解能力去參加高考,豈不是就能拿個默寫部分的滿分了?

其實不然,這個文言文BERT,並不是根據記憶來判斷如何填詞,只是根據訓練后的模型,來預測「概率最大的字」。

於是在測試過程中,出現了一些神奇的事情:這個文言文BERT,不僅能接梗造詞,甚至還給李白詩中的字「推薦」了更好的替代者。

接梗造詞樣樣會,李白的詩也能改

舉個例子,即使輸入的不是原來的詩句,文言文BERT也同樣能預測出被遮住的字,不僅能隨便接梗,還面不改色心不跳。

例如,「垂死病中驚坐起,笑問客從何處來」也能接……(原詩是?)

9622-kefmphc3848185.png

一旦涉及動詞的選取,GuwenBERT的預測就更加難以捉摸,因為可選的範圍太大了。(中文博大精深)

例如,將「不及汪倫送我情」的「送」字遮住的話,GuwenBERT就開始感到迷茫,即使是預測率最高的「知」,也只有15.7%的概率。

「不及汪倫知我情」,想必BERT版李白,內心一定認為汪倫是自己高山流水一般難得遇見的知音。

df32-kefmphc3848186.png

在斷句的情況下,如果並非對仗工整的語句,GuwenBERT也要好好思考一會。

6217-kefmphc3848220.png

雖然文言文BERT有自己的想法,不過它還是「循規蹈矩」的,目前在測試時,語法上還沒有出現太大的問題。

甚至,還能為古人們的寫作提供別樣的靈感。

但文言文BERT目前還只能遮罩一個字,要是多了幾個,它就不跟你玩了。

fd09-kefmphc3848219.png

不知道作者以後會不會在這方面進一步加上新功能。

作者介紹

這個文言文BERT的作者,是兩位來自北理工的同學。

閻覃,來自北京理工大學,目前是計算機科學與技術專業的一名碩士生。

e200-kefmphc3848246.png

這位小哥在GitHub的名字是Ethan,他還特意選擇了某些日期來contribution,把自己的名字拼了上去。

de74-kefmphc3848247.png

遲澤聞,同樣來自北京理工大學,目前的研究工作主要是通過預訓練來進行跨語言的自然語言生成。

目前,模型的相關代碼已經開源,想要了解的小夥伴,可以在下方試玩模型、或是查看代碼。

這樣的文言文BERT,你覺得還能用在哪些地方呢?

歡迎留言討論~

demo在線可玩:

https://huggingface.co/ethanyt/guwenbert-base

模型地址:

https://github.com/Ethan-yt/guwenbert

參考鏈接:

https://zhuanlan.zhihu.com/p/275970135

https://www.linkedin.com/in/ethanyan/