CoLAKE
1.0.0
論文“ CoLAKE :語境化語言和知識嵌入”的源代碼。如果您對重現實驗有任何問題,請隨時與我們聯繫或提出問題。
我們建議創建一個新環境。
conda create --name CoLAKE python=3.7
source activate CoLAKE
CoLAKE基於fastNLP和huggingface的transformer實現,並使用fitlog來記錄實驗。
git clone https://github.com/fastnlp/fastNLP.git
cd fastNLP/ & python setup.py install
git clone https://github.com/fastnlp/fitlog.git
cd fitlog/ & python setup.py install
pip install transformers==2.11
pip install sklearn
要重新訓練CoLAKE ,您可能需要混合 CPU-GPU 訓練來處理大量實體。我們的實作是基於DGL提供的KVStore。此外,為了重現連結預測的實驗,您可能還需要DGL-KE。
pip install dgl==0.4.3
pip install dglke
下載超過 300 萬個實體的預訓練CoLAKE模型和嵌入。要在LAMA和LAMA-UHN上重現實驗,只需下載模型即可。您可以使用此儲存庫中的download_gdrive.py
直接將檔案從 Google Drive 下載到您的伺服器:
mkdir model
python download_gdrive.py 1MEGcmJUBXOyxKaK6K88fZFyj_IbH9U5b ./model/model.bin
python download_gdrive.py 1_FG9mpTrOnxV2NolXlu1n2ihgSZFXHnI ./model/entities.npy
或者,您可以使用gdown
:
pip install gdown
gdown https://drive.google.com/uc ? id=1MEGcmJUBXOyxKaK6K88fZFyj_IbH9U5b
gdown https://drive.google.com/uc ? id=1_FG9mpTrOnxV2NolXlu1n2ihgSZFXHnI
下載論文中實驗的資料集:Google Drive。
python download_gdrive.py 1UNXICdkB5JbRyS5WTq6QNX4ndpMlNob6 ./data.tar.gz
tar -xzvf data.tar.gz
cd finetune/
python run_re.py --debug --gpu 0
python run_typing.py --debug --gpu 0
cd ../lama/
python eval_lama.py
下載最新的 wiki 轉儲(XML 格式):
wget -c https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2
下載知識圖譜(Wikidata5M):
wget -c https://www.dropbox.com/s/6sbhm0rwo4l73jq/wikidata5m_transductive.tar.gz ? dl=1
tar -xzvf wikidata5m_transductive.tar.gz
下載 Wikidata5M 實體和關係別名:
wget -c https://www.dropbox.com/s/lnbhc8yuhit4wm5/wikidata5m_alias.tar.gz ? dl=1
tar -xzvf wikidata5m_alias.tar.gz
預處理 wiki 轉儲:
mkdir pretrain_data
# process xml-format wiki dump
python preprocess/WikiExtractor.py enwiki-latest-pages-articles.xml.bz2 -o pretrain_data/output -l --min_text_length 100 --filter_disambig_pages -it abbr,b,big --processes 4
# Modify anchors
python preprocess/extract.py 4
python preprocess/gen_data.py 4
# Count entity & relation frequency and generate vocabs
python statistic.py
使用實體和關係別名的 RoBERTa BPE 嵌入的平均值來初始化實體和關係嵌入:
cd pretrain/
python init_ent_rel.py
使用混合 CPU-GPU 訓練CoLAKE :
./run_pretrain.sh
如果使用程式碼和模型,請引用這篇論文:
@inproceedings{sun2020 CoLAKE ,
author = {Tianxiang Sun and Yunfan Shao and Xipeng Qiu and Qipeng Guo and Yaru Hu and Xuanjing Huang and Zheng Zhang},
title = { CoLAKE : Contextualized Language and Knowledge Embedding},
booktitle = {Proceedings of the 28th International Conference on Computational Linguistics, {COLING}},
year = {2020}
}
快速自然語言處理
喇嘛
厄尼