伴隨論文方面控制的神經論證產生的存儲庫。
我們依靠日常生活中的論點來表達我們的觀點並以證據為基礎,從而使它們更具說服力。但是,尋找和製定論點可能具有挑戰性。為了應對這一挑戰,我們培訓了一個語言模型(基於Keskar等人的CTRL(2019)),以生成參數生成,該語言模型可以以細粒度的水平進行控制,以生成針對給定主題,立場和方面的句子級別的論點。我們將參數方面的檢測定義為一種必要的方法,以允許這種細粒狀控制和眾包數據集,其中包含5,032個帶有方面的參數。我們發布了該數據集以及參數生成模型的培訓數據,其權重以及該模型生成的參數。
下圖顯示瞭如何訓練參數生成模型:

(1)我們收集了來自兩個大數據源的八個不同主題的數百萬個文檔。所有句子都歸類為親,con和con-con和con-arguments。我們使用在新穎的數據集上訓練的模型,並以相同的主題,立場和方面的培訓來檢測所有參數的各個方面。 (2)我們使用收集的分類數據來調節CTRL模型在所有收集的參數的主題,立場和方面。 (3)在推理中,傳遞控制代碼[topip] [stance] [apcions]將生成一個遵循這些命令的參數。
15。2020年5月
我們已經為方面控制的神經參數生成模型添加了代碼,並添加了有關如何使用它的描述。模型和代碼修改了Keskar等人的作品。 (2019)。可以在“下載”部分中找到指向微調模型權重和培訓數據的鏈接。
8. 2020年5月
參數方面檢測數據集可以從此處下載( gonge_aspect_detection_v1.0.7z )。從那裡,您還可以下載使用參數生成模型(生成的_arguments.7z )生成的參數和數據以重現參數生成模型的微調( reddit_training_data.7z , cc_training_data.7z )。
注意:由於許可原因,這些文件無法自由分發。單擊任何文件都會將您重定向到表格,您必須在其中留下姓名和電子郵件。提交表格後,您將很快收到下載鏈接。
從這裡下載數據集。您可以下載以下文件:
注意:由於許可原因,這些文件無法自由分發。單擊任何文件都會將您重定向到表格,您必須在其中留下姓名和電子郵件。提交表格後,您將很快收到下載鏈接。
使用腳本/download_weights.sh下載模型權重。該腳本將在reddit-comments和common-crawl數據上進行微調的模型下載權重,並將其解壓縮到主要項目文件夾中。
該代碼用Python3.6測試。安裝所有要求
pip install -r requirements.txt
並按照使用時的原始讀數中的說明,步驟1和2 。
在下文中,我們描述了使用方面控制的神經論點生成模型的三種方法:
A.僅使用生成模型
B.使用可用的培訓數據來複製/微調模型
C.使用您自己的數據微調一個新的方面控制神經論證生成模型
為了生成參數,請首先下載模型的權重(在腳本/download_weights.sh上下載腳本)。通過python generation.py --model_dir reddit_seqlen256_v1運行模型,用於在reddit-comments data或python generation.py --model_dir cc_seqlen256_v1上訓練的型號,用於對型號進行了對Common-Crawl數據訓練的模型。加載完成後,輸入控制代碼,例如nuclear energy CON waste ,以生成遵循此控制代碼的參數。為了獲得第一個生成的參數的更好結果,您可以用一個或結腸(“。”或“:”)結束控制代碼。有關更多詳細信息,請參閱論文。
注意:每個主題和數據源的允許的控制代碼可以在triagn_data文件夾中找到。
為了像我們在工作中所做的那樣微調模型,請按照以下步驟操作:
從原始紙張下載預先訓練的權重(使用原始紙,第3步,第3步)。
下載培訓數據(請參閱下載部分。您需要文件reddit_training_data.7z或cc_training_data.7z 。取決於源(CC或REDDIT),將檔案放入文件夾trieftraine_data/ commun-crion-crawl-en/或triaghta crawl-en/或triagn_data/ triaad _data/ draining_data/ redditcomments-en/ and and and and and and and and and and and and and and and and and and and and and and and and and and and and and and unzip- en and unzip a:
7za x [FILENAME].7z
要從我們用於微調的培訓數據中復制相同的培訓文檔,請在triagn_utils/pipeline/progeine_documents_all.sh上使用腳本並調整索引參數。根據您的硬件,培訓文件生成可能需要一個小時或更長時間才能計算。
最後,需要從所有培訓文件中生成Tfrecords。為此,請運行:
python make_tf_records_multitag.py --files_folder [FOLDER] --sequence_len 256
[文件夾]需要指向培訓文檔的文件夾,例如訓練_data/common-crawl-en/daportion/final/ 。生成後,印刷了為此特定主題生成的訓練序列的數量。使用它來確定應訓練模型的步驟數。 tfrecords存儲在文件夾培訓_utils中。
訓練模型:
python training.py --model_dir [WEIGHTS FOLDER] --iterations [NUMBER OF TRAINING STEPS]
該模型將自動從traine_utils文件夾中自動採用生成的tfrecords。請注意,[權夾]中的權重將被覆蓋。對於新的微調模型的生成,請按照“ A.僅使用生成模型”中的說明。
為了簡化收集您自己的培訓數據的過程,我們添加了出版物中描述的管道的實現(請參閱I。使用我們的管道(使用grigentext api))。為了將句子標記為參數並確定其立場和方面,我們使用grigentext-api。另外,您也可以訓練自己的模型(請參閱II。創建自己的管道(無參數api))。
請向grongeext-api請求用戶ID和apikey。在triagh_utils/pipeline/recertentials.py上的各個常數中同時編寫ID和鍵。
作為第一步,需要收集有關感興趣主題的培訓文件。 (注意:此步驟不是代碼的一部分,必須是自我實施的)。我們這樣做是通過從Common-Crawl和Reddit-Comments下載轉儲,並用Elasticsearch索引它們。結果需要是存儲在triagh_data/[index_name]/[topic_name]/noopcoressed/的文檔,其中[index_name]是數據源的名稱(例如,common-crawl-en)的名稱(例如common-crood-crawl-en )和[toge_name]是在哪些文檔中收集了哪些文檔的搜索主題(替換了pisition epienct ofient ofiped equient equient_name_name]和[index_name]和[index_name]和[index_name]和[index_name]和[]和[]。每個文檔是一個單獨的JSON文件,至少具有密鑰“ Sents”,其中包含此文檔中的句子列表:
{
"sents": ["sentence #1", "sentence #2", ...]
}
參數_classification.py將收集的所有文檔用於給定主題,並將其句子分類為pro-/con-/con-/non-arguments。以下命令開始分類:
python argument_classification.py --topic [TOPIC_NAME] --index [TOPIC_NAME]
丟棄了非差異,最終的分類參數存儲在文件中,每個參數最多為200,000個參數。
exch_detection.py解析所有先前分類的參數並檢測其方面。以下命令開始方面檢測:
python aspect_detection.py --topic [TOPIC_NAME] --index [TOPIC_NAME]
然後將所有及其各個方面的參數存儲到一個合併的單個文件中。
prepary_documents.py附加了所有具有相同主題,立場和(莖)方面的參數:培訓文檔:
python prepare_documents.py --max_sents [MAX_SENTS] --topic [TOPIC_NAME] --index [INDEX_NAME] --max_aspect_cluster_size [MAX_ASPECT_CLUSTER_SIZE] --min_aspect_cluster_size [MIN_ASPECT_CLUSTER_SIZE]
[max_sents]設置要使用的最大參數數(如果可能的話,在pro和con參數之間均勻分佈)和[min_aspect_cluster_size]/[max_aspect_cluster_size]設置一個允許的參數以附加到單個培訓文檔。最終文檔存儲在文件夾triench_data/[index_name]/[topic_name]/final/ 。腳本preeg_all_documents.sh可用於自動化該過程。
最後,要從文檔中創建培訓序列並開始對模型進行微調,請下載我們的微調權重(請參閱下載部分)並遵循B。使用給定的培訓數據複製/微調模型,步驟4-5。
重要的是:除了培訓文檔外,在triagn_data/[index_name]/[topic_name]/generation_data/control_codes.jsonl上創建了具有所有基於培訓文檔的所有控制代碼的文件。該文件保留所有控制代碼以生成從微調完成後生成參數。
為了培訓一個論點和立場分類模型,您可以使用Stab等人的UKP語料庫和相應出版物中描述的模型。 (2018)。但是,為了更好的結果,我們建議使用Bert(Devlin等,2019)。
要培訓方面檢測模型,請下載我們的參數方面檢測數據集(由於許可原因,有必要用您的姓名和電子郵件填寫表格)。作為一個模型,我們建議從擁抱面上的BERT進行序列標記。
為了準備培訓文檔並微調模型,您可以使用I.使用我們的管道(帶有gromentext api)的prepar_documents.py ,步驟d。如果您以以下格式保留分類數據:
該文件應命名為合併。 JSONL並位於目錄trienchory_data/[index_name]/[topic_name]/processed/ ,其中[index_name]是收集樣本的數據源,[topic_name]相應的搜索查詢的名稱。
每行代表以下格式的訓練樣本:
{"id": id of the sample, starting with 0 (int), "stance": "Argument_against" or "Argument_for", depending on the stance (string), "sent": The argument sentence (string), "aspect_string": A list of aspects for this argument (list of string)}
如果您覺得這項工作有幫助,請引用我們的出版物方面控制神經論證的產生:
@inproceedings{schiller-etal-2021-aspect,
title = "Aspect-Controlled Neural Argument Generation",
author = "Schiller, Benjamin and
Daxenberger, Johannes and
Gurevych, Iryna",
booktitle = "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies",
month = jun,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2021.naacl-main.34",
doi = "10.18653/v1/2021.naacl-main.34",
pages = "380--396",
abstract = "We rely on arguments in our daily lives to deliver our opinions and base them on evidence, making them more convincing in turn. However, finding and formulating arguments can be challenging. In this work, we present the Arg-CTRL - a language model for argument generation that can be controlled to generate sentence-level arguments for a given topic, stance, and aspect. We define argument aspect detection as a necessary method to allow this fine-granular control and crowdsource a dataset with 5,032 arguments annotated with aspects. Our evaluation shows that the Arg-CTRL is able to generate high-quality, aspect-specific arguments, applicable to automatic counter-argument generation. We publish the model weights and all datasets and code to train the Arg-CTRL.",
}
聯繫人:本傑明·席勒(Benjamin Schiller)
https://www.ukp.tu-darmstadt.de/