Chinese-Metaphor
CCL 2018 Shared Task - 中文隱喻辨識與情緒分析
Task Description
- 任務細部: http://ir.dlut.edu.cn/news/detail/508
- Update: 子任務一為二分類任務,只需辨別是否為動詞隱喻即可
- 時間:9.30截止。每隊可於9月9日、9月16日、9月23日、9月30日,截止每週日晚上十點提交結果;每支隊伍在每個星期最多僅可提交三次,並按照最後提交的結果計算排名。 9月10日、17日、24日、10月1日下午五點前公佈在網址(http://ir.dlut.edu.cn/)。
- 訓練資料: http://ir.dlut.edu.cn/File/Download?cid=3 《CCL 2018 中文隱喻辨識與情緒分析評測資料》
- 測試資料(無標籤): http://ir.dlut.edu.cn/File/Download?cid=3 《CCL 2018 中文隱喻辨識與情緒分析測驗資料》
- 提醒:依組織方要求,此資料集僅可為本次評測任務使用,其它情況下使用需與組織方聯繫。
Repo Structure
- /Corpus: 儲存Penn StateUCMC中文隱喻語料庫(暫時用不到)
- /data: 訓練和測試數據
- /dicts: 兩個子任務的關係字典,以及詞彙表
- /memo: 會議記錄
- /model_structure: nn模型的結構圖
- /paper:相關文獻
- /pretrained_emb: 網路上下載的預訓練word embedding(基於wikipedia),已過濾好
- /src:程式碼
- /results: 模型評測結果和產生的測試標籤
- /models: 需要自己建造這個路徑,下面設/verb和/emo兩個子路徑,用來存放訓練好的模型
- /submission: 提交的結果文件,按日期存放
Code Structure
- 核心程式碼:
- conf.py: 設定各種參數
- multi_cgru_keras.py: 模型結構
- train.py: 在90%的訓練資料上訓練模型
- eva_model.py:在10%的訓練資料上評測模型表現
- generate_test_labels.py: 在測試集上預測標籤
- 輔助代碼:
- split_data.py: 把訓練集分成90%(用於訓練)和10%(用於評測模型表現)
- back_translate.py: 用Google Translate API來增加訓練數據
- convert_data.py: 把資料從xml轉換成txt,把數字標籤轉換成易理解的文字標籤
- data_provider.py: 讀取數據,為訓練做準備
- filter_wordemb.py: 基於train和test data過濾預訓練詞向量,只保留data中出現的字(目前的wiki詞向量已過濾好)
How to run code
- 在conf.py中設定相關參數
- 運行train.py,訓練模型
- 運行eva_model.py, 評估模型表現
- 根據第三步驟中的評估結果,選出表現較好的模型用generate_test_labels產生測試資料標籤
Done
- NN Baseline: 基於CGRU,最好表現(accuracy)task1約70%,task2約39%
- 比較:Majority Baseline,task2 37%
- 比較:基於情緒詞庫的Naive baseline,不用機器學習,task2 51%
- 基於NN Bseline,試試以下feature:
- 優化Embedding層
- 用pre-trained embedding取代模型自己學習的embedding,task2最好表現約acc 50%
- 字詞向量拼接:配合減少smooth參數,task2 macro f - 39.6%
- Back Translation
- Google Translate 6種語言,實驗了幾種過濾方法,task2最好表現約acc 53%
- 其他模型結構
- 直接使用Embedding作為分類特徵
- LSTM+fully connected:task2 macro f - 40%
- 一點Error analysis:
- 觀察到overfitting嚴重,故嘗試調整l2(↑), dropout(↑), smooth(↓),但並未發現大的變化;同時發現相同模型表現不穩定(task2多次運行差距可達10%)
- Bad case其中有一部分是有轉折的句子(eg 包含「怎麼可能沒」「無法」「既然」等字眼)
- 發現資料中一部分標註存疑
- 取得Penn State中文隱喻語料庫,可用於自訓練word embedding
- 補充訓練語料:用其他英文語料翻譯回來,補充訓練語料
- 調參
Todolist
- 基於NN baseline嘗試更多feature:
- 繼續優化Embedding層
- 使用其他pre-trained embedding: eg 基於Penn State隱喻語料庫訓練的embedding, ELMo Embedding等
- 將情緒詞庫加入nn:
- 對label做embedding:現有方法只用於有遞進關係的labels(very neg, neg, neutral, pos, very pos)
- 動詞、名詞的subcategory
- Dependency relation
- 透過觀察數據,檢視虛詞在兩個子任務中所扮演的角色,再決定將虛詞的哪些資訊加入模型。虛詞:什麼樣的資訊有幫助?
- 嘗試其他模型結構:
- (參考'Baseline Needs More Love: On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms'一文)
- 使用Transformer最為sentence encoder(參見'Attention Is All You Need'一文)
Resources
- Penn State中文隱喻語料庫(http://www.personal.psu.edu/xxl13/download.html)
- 大連理工情緒詞彙本體庫(http://ir.dlut.edu.cn/EmotionOntologyDownload)
Organizor
大連理工大學資訊檢索研究室