整理 | 夕顏
出品 | AI科技大本營(ID:rgznai100)
【導讀】最近,一個名字相當接地氣的「狗屁不通」文章生成器(BullshitGenerator)火了,截至目前 GitHub 上 Star 數已超過 3200,還上了微博熱搜。這個神器可以生成各種各樣奇葩文章,比如領導專用「彩虹屁」萬字長文。只有你想不到,沒有這個神器寫不成的文章。但是,生成的文章確實也是「狗屁不通」。這次我們就來解讀一下,這個生成器是怎麼運行的,以此為例,延展探討一下文本生成未來還有哪些改進的方向。
話說,BullshitGenerator 這個項目最初起源於知乎上一位網友的提問:「學生會退會申請六千字怎麼寫?」,本來很簡單的一個問題,但是回答中很多跑偏題的,於是本項目的貢獻者之一表示看不下去了,並「隨便寫了個項目」:狗屁不通文章生成器,幫助這位同學寫了一篇退會申請。
用 Python 生成的這篇文章長這樣:
由於下拉十多下沒滑到底,讓人失去了截全圖的耐心,文章也實在看不下去,因為它真的是一篇邏輯不通的 bullshit。
AI科技大本營(ID:rgznai100)也用這個生成器嘗試了幾個大家都會思考的主題,比如:
試完之後筆者發現,文章本身是沒什麼探討的必要性了,不信你可以自己試試:
生成器地址:https://suulnnka.github.io/BullshitGenerator/index.html
但是關於生成器的工作原理,相信很多人是比較感興趣的。
運行原理是什麼?
據貢獻者介紹,本項目最初的目的是用於中文文字 GUI 開發時測試文本渲染,用 Python 3 版本寫成,目前共有 7 位貢獻者。
鑑於目前 AI 用於文字生成非常流行,這個項目是否也用到了 AI 相關算法呢?答案是否定的,作者表示,BullshitGenerator 沒有用到任何自然語言處理相關算法,只是簡單地擼代碼就可以達到效果。
那 BullshitGenerator 運行的原理是怎樣的?AI科技大本營採訪了CSDN博客專家@小宋是呢進行解讀:
「狗屁不通生成器」是一個文本生成器,用來生成一些中文文字用於 GUI 開發時測試文本渲染。由於此項目的目的只是用於 GUI 開發時測試文本渲染,所以對文本的連貫性和含義要求不高,這也就是「狗屁不通」的含義了
從源碼中可以看出,生成文本的方式就是從本地讀取到的文本中按照一定規律隨機讀取,並且替換掉文本中「x」為指定的主題文本,並未使用深度學習方法。不難發現,生成的文本會存在句子不連貫、重複性高的特點。
是否能與 GPT 2 結合?
issue 中有人發表了對這個項目的評價:
可以看到,大家對這個項目的評價還是以正面居多。其中,有人提到了希望與 GPT 2 進行整合:
很快有人對這個想法提出疑問,比如算力的問題。那麼,BullshitGenerator 與 GPT 2 整合的想法可行嗎?或者是否有必要?@小宋是呢給出的看法如下:
個人覺得「狗屁不通生成器」與「GPT」結合意義不大,這兩個項目的目標和特點差異很大。「狗屁不通生成器」是為了快速用來生成一些中文文字用於 GUI 開發時測試文本渲染,而「GPT」文本生成器目標是生成高質量連貫文本,「GPT」的特點是模型大速度慢質量高,並不滿足「狗屁不通生成器」的設計需求。
GPT 2 是 OpenAI 推出的一個中文生成模型,由加拿大工程師 Adam King 製作的網站上,任何人都能調教簡化版的 GPT-2,它能夠識別從新聞、歌詞、詩歌、食譜、代碼的各種輸入,甚至還為《復仇者聯盟》寫了一個細節豐富的續集,內容可讀性相當高。
令人振奮的是,這個史上最強的 NLP 模型今天正式全部開源,OpenAI 正式放出了 GPT 2 的最後一部分代碼。
開源地址:https://github.com/openai/gpt-2。
作為 GPT 2 分段發布中的最後一輪,此次公開的完整 GPT-2 包含 15 億條參數,其中包含用於檢測 GPT-2 模型輸出的全部代碼及模型權重。
當然,關於 GPT 2 的討論仍在繼續,比如它的實用性,生成假新聞被濫用引發的安全問題等,都是後續還有待改善的關鍵點。
此外,GPT 2 還有一個中文版本,相比之下,GPT2 與 BullshitGenerator 不同之處在於前者使用了 BERT 或 BPE 編譯器,但同樣不需要算法基礎,只要簡單 clone 運行即可,技術上的實現難度更大一些。
「GPT」是比較標準的自回歸語言模型了,Transformer 出現前都是通過 RNN 的方法,之前比較火的「CharRNN」深度學習作詩與作曲都屬於這個範疇。「GPT」將 Transformer 替換了 RNN,使得提取特徵的能力與運算速度都得到很大提升,當然使用大規模數據訓練模型也是「GPT」效果好的一個重要因素。
相較於「GPT」,「狗屁不通生成器」實現就簡單很多,主要代碼就幾十行,基本上只用到了Python 編程技術。體現在文本的連貫性和含義上,雖然生成文本的質量不高,但它也滿足了生成一些中文文字用於 GUI 開發時測試文本渲染的要求。
GPT2 中文項目:https://github.com/Morizeyao/GPT2-Chinese
文本生成的未來
GPT 2 的橫空出世讓大家看到了 AI 在文本生成方面的潛力。正如 Open AI 官博所說,雖然 GPT 2 還面臨檢測等方面的挑戰,但它的潛力還很大, Open AI 表示,未來這個模型還將繼續進行改進,他們期望語言模型能夠在性能上有更大的提升,以此提供更高的輸出質量和準確性。
BullshitGenerator 項目也公布了下一步計劃:
防止文章過於內容重複
加入更多囉嗦話.
加入馬三立裡的內容
加入手寫體直接渲染出圖片的功能(僅僅用於測試本人的印表機是否工作正常, 請勿做它用).
大膽設想一下,日後類似於 BullshitGenerator 這樣的文本生成器將進一步改進,那麼是否在沒有 AI 算法的參與下,僅憑簡單的代碼就能夠生成高質量的文本(雖然可能性幾乎為零,但如果可以實現將是顛覆性的成果)?從另一個思路來講,以 GPT2 為代表的 NLP 模型現在已經可以生成以假亂真的文本,未來又該如何克服目前的挑戰,生成更高質量的作品,同時能夠保證安全?是否未來有一天,文本生成技術或許真的會取代一部分人類的工作?這些問題都值得深思。
目前研究方向:自然語言處理與自動語音識別、圖像識別與自動檢測、圖神經網絡與推薦系統。