---
# System prepended metadata

title: '**Team14 Final Project Report**'

---

# Team14 Final Project Report


## Q1. Model design & Concept 

### **Rule-based Method**
* **Pun location選擇機制的設計想法：**

    “a humorous use of a word or phrase that has several meanings or that sounds like another word”此為[字典](https://dictionary.cambridge.org/zht/%E8%A9%9E%E5%85%B8/%E8%8B%B1%E8%AA%9E/pun)中對Pun的說明，可以得知部分雙關語在一句話中會有多種意思。因此在機制的設計上，首先會先將不具多種意思的詞排除在候選列表外。

    接著參酌Huang等，在“[Identification of Homographic Pun Location for Pun Understanding](https://dl.acm.org/doi/10.1145/3041021.3054257)”中所提出，以位置資訊作為判斷雙關語的框架。我們以test資料計算雙關語位置，雙關語位置/句子長度，其平均約為0.8。故我們採用這個概念，將句子中前半部分的詞排除在候選列表之外。

    最後，觀察雙關語對句子意思的影響。我們比較每個候選詞被替換成對應同義詞後，整個句子意思的變化。當替換後的句子意思與原本的句子意思有所差距時，我們認為此候選詞將會是真正的雙關語，反之，當兩個句子語意上沒有變化時，此候選詞便有更少可能被選為最後的答案。

* **Pun location選擇機制：**
    1. 從句子中，篩選出最有可能為正確答案的候選詞列表：
    a.排除標點符號、stop words。
    b.排除同義詞數量小於兩個的詞(使用wordnet查詢)。
    c.排除特定位置前的詞。
    2. 當候選詞列表建立完成，我們首先找出列表中每個詞對應的同義詞集合。將每個詞的同義詞代換進句子中，計算代換後句子的詞意(將句子中所有詞之向量相加取平均)，接著算出代換後句子與原句子的cosine similarity。最後選擇相似度最小的，找出答案。
    3. 案例說明：


    ```    
    原句子(text_id=hom_625)：OLD PROGRAMMERS never die they just go to bits .
    候選列表：['go', 'bits']

    go的同義詞集合：['blend_in', 'go_bad', 'hold_up', 'live_on', 'fling', … , 'move', … , 'exit', 'go', 'whirl',     
    'function', 'sound', 'pass', 'endure', 'decease', 'Adam', 'run', 'offer']
    代換同義詞後的句子：OLD PROGRAMMERS never die they just move to bits .
    原句子與代換同義詞後的句子的相似度：0.973536915106364

    bits的同義詞集合：['morsel', 'moment', 'second', 'snatch', 'flake', 'routine', 'prick', 'mo', 'turn', 'sting', … , 
    'number']
    代換同義詞後的句子：OLD PROGRAMMERS never die they just go to number .
    原句子與代換同義詞後的句子的相似度：0.929340444103404

    ->故選擇較小相似度者(使句子意思出現變化的詞)，bits，為雙關語。
    ```

### **Deep Learning Approach**

* Architecture:
![](https://i.imgur.com/LzEBUJB.png)
1. 此架構是 [Zou and Lu,2019](https://arxiv.org/abs/1909.00175) 所設計的。
2. 其主要思路是將character和 word 分別 embedding，之後將他們的tag( BPA: Before,Pun,After) 標上去一起餵給雙向LSTM 後，透過CRF Layer 將tagging 預測出來。 

## Q2. What kind of word sense representation used and experimented in your model

### **Rule-based Method**
* Word Sense Representation：使用google提供的GoogleNews-vectors-negative300.bin詞向量。

* 找出最佳斷點位置的試驗：

    | **斷點位置** | **正確答案有在候選列表的比例** |**候選詞總數/詞總數** |
    | -------- | -------- | -------- |
    | 0.1  (取句子後90%的詞)   | 0.9556    | 0.3885     |
    | 0.3  (取句子後70%的詞)   | 0.9393    | 0.2896     |
    | 0.35 (取句子後65%的詞)   | 0.93      | 0.2696     |
    | 0.5  (取句子後50%的詞)   | 0.8818    | 0.1962     |
    | 0.7  (取句子後30%的詞)   | 0.8017    | 0.1323     |

    我們期望正確答案有在候選列表的比例越高越好，候選詞總數/詞總數則越低越好(代表排除更多選擇)。觀察此數據，斷點位置在越前面，代表取到越多的詞，正確答案在候選列表的比例也會越高，但相對的被排除的也會越少，增加更多選錯的可能。

    ->考量正確性與排除數量間的取捨，最終選擇0.3作為可接受的斷點位置。
    
* **Supplement(another ruled based experiment)**
    同樣使用google提供的GoogleNews-vectors-negative300.bin詞向量。 從原始的句子中排除stopwords及不在詞向量表中的字後，計算兩兩word的similarity來做最後的選擇。這部分就沒有使用同義詞的替換。

###  **Deep Learning Approach**

根據Zou 的描述，此架構並沒有將word sense考慮進來，而是使用 characters embeddings, pre-trained word embeddings 和 position indicators 作為model 的 input，並利用LSTM 做sequential labeling。


## Q3. What problem did you face during the homework and how you solved

###  **Deep Learning Approach**
1. 起初遇到的問題首先是code libraries 版本的問題，由於這篇文章已經是3年前的文章，source code還用著pytorch 0.4的版本，將syntax 統統更新至目前版本就花了不少時間。
2. 後來在inferences的時候發現該作者沒有提供api，甚至model 也不好直接拿來做預測，於是我們只好去修改他的model，做出可以符合我們需求的api。


## Q4. Error Analysis and Discussion





###  **Deep Learning Approach**
KFold Validation的 K 對結果造成的影響非常大，選對K做造成Performance上的差距可以在20%以上。此外所選用的optimizer 也有影響。原作者是推薦使用SGD做optimize，但是我們實測下來用SGD 做optimize 在 K = 5, Epoch=50 的情況下僅僅只有 65% 左右的F1 score. 但是在使用Adam optimizer 在同樣的參數設置下可以到75%左右的準確率。 


## Q5. Compare and implement unsupervised method and supervised method

### **Rule-based Method**
最終此方法在Kaggle上的Mean F1-Score為0.56875，相較深度學習方法的得分(0.75625)，存在不小差距。觀察單純依靠此一選擇機制，尚應存在許多其他變因影響最終答案的選擇。相關研究也有提出一些可以參酌的Pun location選擇框架，未來可繼續嘗試結合不同概念，實驗是否能有更好的突破。
(而沒有使用同義詞替換的試驗結果更差，最後的score落在0.42左右，但還是可以看出有蠻大差別的)
* **Possible improvement**
    可能可以找出每個word可代表的各種語意，再去做比對
    

### **Deep Learning Approach**
這是一個Supervised Learning的方法，需要提供ground truth 給model才有結果。和Unsupervised 的方法比較起來，雖然在input上沒有unsupervised的方便，但是它能夠給出更好的performance，在有Ground Truth的情況下會更推薦使用Supervised Learning


## 參考資料

1. Yu-Hsiang Huang, Hen-Hsen Huang, Hsin-Hsi Chen. “Identification of Homographic Pun Location for Pun Understanding”

2. 刁宇峰，杨亮，林鸿飞，吴迪，樊小超，徐博，许侃。＜基于潜在语义特性的语义双关语检测及双关词定位＞

3. Yanyan Zou, Wei Lu. "Joint Detection and Location of English Puns"