1. 程式人生 > >ELMo(Embeddings from Language Models) --學習筆記

ELMo(Embeddings from Language Models) --學習筆記

學習參考自:
(1)、ELMo 最好用的詞向量《Deep Contextualized Word Representations》
(2)、吾愛NLP(5)—詞向量技術-從word2vec到ELMo
(3)文字嵌入的經典模型與最新進展

1、ELMo簡介

基於大量文字,ELMo模型從深層的雙向語言模型(deep bidirectional language model)中的內部狀態(internal state)學習而來。
ELMo的優勢:
(1)ELMo能夠學習到詞彙用法的複雜性,比如語法、語義。
(2)ELMo能夠學習不同上下文情況下的詞彙多義性。
在這裡插入圖片描述

ELMo與word2vec最大的不同:


Contextual: The representation for each word depends on the entire context in which it is used. 
(即詞向量不是一成不變的,而是根據上下文而隨時變化,這與word2vec或者glove具有很大的區別)

引例:
舉個例子:針對某一詞多義的詞彙w=“蘋果”
文字序列1=“我 買了 六斤 蘋果。”
文字序列2=“我 買了一個 蘋果 7。”
上面兩個文字序列中都出現了“蘋果”這個詞彙,但是在不同的句子中,它們的含義顯示是不同的,一個屬於水果領域,一個屬於電子產品領域,如果針對“蘋果”這個詞彙同時訓練兩個詞向量來分別刻畫不同領域的資訊呢?答案就是使用ELMo。

它首先在大文字語料庫上預訓練了一個深度雙向語言模型(biLM),然後把根據它的內部狀態學到的函式作為詞向量。實驗表明,這些學到的詞表徵可以輕易地加入到現有的模型中,並在回答問題、文字蘊含、情感分析等 6 個不同的有難度的 NLP 問題中大幅提高最佳表現。實驗表明顯露出預訓練模型的深度內部狀態這一做法非常重要,這使得後續的模型可以混合不同種類的半監督訊號

2、ELMo原理

在這裡插入圖片描述

3、ELMo的使用方法

在這裡插入圖片描述

4、ELMo的安裝

ELMo整合在了基於pytorch的allennlp這個工具包當中,所以我們要是用ELMo必須要先安裝pytorch,然後再安裝allennlp。
安裝請參照

官網指示。

注意:allennlp這個包目前不支援windows,所以要使用allennlp必須要在linux上進行安裝使用。程式碼如下:

conda install pytorch -c pytorch
pip3 install torchvision
pip install allennlp