妙笔生花:一个易用、高效的文本生成开源库
文本生成作為近年來自然語言處理中的熱門領域,受到了學界和工業界的廣泛關注。隨著研究的不斷深入,文本生成領域下的子任務和相應的模型越來越豐富,一些優秀的開源框架也紛紛涌現。
現有的開源文本生成庫大致可分為兩類,一類傾向于模塊化驅動,提供各個組件供研究者搭建不同的模型,但缺點在于許多特殊的baseline無法通過模塊完成;另一類傾向于baseline驅動,方便用戶快速調用baseline,但缺點在于整體結構不夠統一,可擴展性有限。
因此,為了兼顧兩者的優勢,我們(中國人民大學AI BOX團隊)推出了新的開源文本生成庫TextBox(妙筆),在保證組件模塊化的同時,提供了許多較新baseline的接口,使得研究者一方面可以基于模塊搭建自己的模型,另一方面也可以快速調用已有的baseline完成實驗。目前相關代碼和相應論文都已上線。
下面讓我們來看看到底有什么厲害的功能吧!
16種模型:覆蓋無條件生成和有條件生成兩個主流任務,后者主要包括機器翻譯和自動摘要任務。
6個數據集:提供已處理好的數據集,也可以使用我們的庫來處理原始數據。
多種評測方式:支持主流的自動評測指標,包括通用指標和特定任務指標。
易上手、易擴展:新手也可快速上手,一鍵復現,搭積木式的靈活開發,想要的模型統統安排!
論文地址:https://arxiv.org/pdf/2101.02046.pdf
項目GitHub地址:https://github.com/RUCAIBox/TextBox
核心特色
TextBox框架具有三大核心特色。
基于PyTorch的統一模塊化框架
TextBox是基于深度學習框架PyTorch開發的文本生成庫。為了統一開發多種文本生成模型并簡化其開發難度,TextBox的設計是高度模塊化的。它將不同的模型解耦成了一組可高度復用的模塊,如數據模塊、模型模塊、評估模塊和公共功能模塊。因此,在本框架中,通過簡單而靈活的配置,就可以根據內置的評估方法來比較不同的文本生成模型。同時,還可以像搭積木一樣插入或者交換模塊,在高度概念化的層面上開發新的文本生成模型。
全面的基準模型、數據集和評估。
除了模塊化的設計之外,TextBox還包含了廣泛的基準文本生成模型,其涵蓋了變分自編碼器(VAE)、生成式對抗網絡(GAN)、循環神經網絡(RNN),基于Transformer的模型,以及預訓練語言模型(PLM)等類別。TextBox通過配置文件或命令行提供靈活的參數指定來運行、比較和測試這些傳統的基準模型和目前最先進的模型。為了構建一個可重用的基準,TextBox整合了許多常用的數據集,可以針對不同的文本生成任務進行評估。例如,我們采用在GigaWord數據集上執行文本摘要任務,以及在WMT 2014 English to German數據集上執行機器翻譯任務。TextBox支持一系列廣泛使用的評估算法,用于測試和比較各類文本生成模型,例如評估語言模型的perplexity和neg-likelihood,評估翻譯模型的BLEU,以及評估摘要生成模型的ROUGE。
高度靈活及拓展性強的框架
TextBox在文本生成模型部分提供了多種常用的函數與模塊的接口。例如RNN encoder-decoder, Transformer encoder-decoder以及各種預訓練語言模型。具有不同需求和專業背景的用戶可以很方便地選擇不同的接口來構建自己的模型,并且能夠基于框架提供的統一評估標準來對模型進行評估。更重要的是,TextBox提供的接口可以與PyTorch接口完全兼容,允許無縫集成用戶自定義的模塊,使得用戶能夠根據需要集成任何外部組件。
快速上手
TextBox提供了較好的封裝,我們將提供簡單的tutorial大致介紹如何快速上手。
安裝
目前TextBox支持源代碼安裝和Pip安裝,用戶可以通過下面的簡單命令進行安裝使用:
git?clone?https://github.com/RUCAIBox/TextBox.git?&&?cd?TextBox pip?install?-e?.?--verbose或pip?install?textbox一鍵運行
我們在Github提供了一系列一鍵運行的腳本,包括訓練、單獨測試:
python?run_textbox.py?--model=RNN?--dataset=COCO?--task_type=unconditional python?run_textbox.py?--model=RNN?--dataset=COCO?--task_type=unconditional?–-load_experiment=<ckpt_file>?--test_only=true通過上述命令就可以直接在COCO數據集上基于RNN模型進行無條件生成任務的訓練和單獨測試。
如果你想改變參數,比如rnn_type、max_vocab_size等,可以按需在命令行設置額外的參數:
python?run_textbox.py?--model=RNN?--dataset=COCO?--task_type=unconditional?\--rnn_type=lstm?--max_vocab_size=4000如果你想運行別的數據集、模型和任務,可以使用
python?run_textbox.py?--model=<model_name>?--dataset=<dataset_name>?--task_type=<task_type>如果你使用pip安裝,只需新建一個py文件,添加以下代碼即可實現模型的訓練和測試
from?textbox.quick_start?import?run_textboxrun_textbox(config_dict={'model':?'RNN','dataset':?'COCO','data_path':?'./dataset','task_type':?'unconditional'})使用預訓練語言模型
TextBox支持部分預訓練語言模型進行文本生成任務,下面以GPT-2為例,展示我們如何利用預訓練語言模型進行fine-tuning。
從huggingface提供的模型源(https://huggingface.co/gpt2/tree/main)中下載GPT-2模型,包括config.json, merges.txt, pytorch_model.bin, tokenizer.json和vocab.json五個文件,將其放在同一個文件夾下,路徑為pretrained_model/gpt2,與textbox文件夾同級。
下載好模型之后,直接通過腳本運行:
未來展望
至此,“妙筆”文本生成庫的自我介紹就到此結束啦。未來我們將繼續努力,開發更多新的模型,維護并保持版本穩定。有好的建議或意見也歡迎關注(點擊右邊鏈接關注??)AI Box公眾號后臺留言或者在Github的issues中提問,期待大家的試用體驗和寶貴意見。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的妙笔生花:一个易用、高效的文本生成开源库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每个月存500怎么存好 小钱也有大回
- 下一篇: 怎样办理车辆保险