從零開始快速入門google開源BERT模型

什麼是BERT?

BERTGoogle爲預訓練語言表示而開發的NLP模型。它利用了在網絡上公開提供的大量純文本數據,並且以無人監督的方式進行了培訓。對於每種語言,預訓練BERT模型是一個相當昂貴但一次性的過程。幸運的是,Google發佈了一些經過預先訓練的模型,您可以從此處下載

Sentence Encoding/Embedding 是許多NLP應用程序所需的上游任務,例如,情緒分析,文本分類。目標是將可變長度的句子表示爲固定長度的向量,例如[0.1,0.3,0.9]的hello world。向量的每個元素都應“編碼”原始句子的某些語義。

github地址:    https://github.com/hanxiao/bert-as-service

安裝

最好的安裝方法bert-as-service是通過pip。請注意,服務器和客戶端可以分別安裝,甚至可以安裝在不同的計算機上:

pip install -U bert-serving-server bert-serving-client

 

服務器必須上運行的Python> = 3.5Tensorflow> = 1.10單點-10)。同樣,該服務器不支持Python 2!

注意OM

客戶端可以同時在Python 2和3上運行。

下載預訓練的BERT模型

下載下面列出的模型,然後將zip文件解壓縮到某個文件夾,例如 /tmp/english_L-12_H-768_A-12/

由Google AI發佈的預訓練BERT模型列表:

BERT-Base, Uncased 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Large, Uncased 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Cased 12-layer, 768-hidden, 12-heads , 110M parameters
BERT-Large, Cased 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Multilingual Cased (New) 104 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Multilingual Cased (Old) 102 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Chinese Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters

 

啓動BERT服務

安裝服務器之後,您應該能夠使用bert-serving-start CLI,如下所示:

bert-serving-start -model_dir /${BERT_MODEL_PATH}/english_L-12_H-768_A-12/ -num_worker=4

這將以四個worker啓動服務,這意味着它最多可以處理四個併發請求。更多併發請求將在負載均衡器中排隊。

下面顯示了正確啓動時服務器的狀態:

使用客戶端獲取句子編碼

現在,您可以簡單地對句子進行編碼,如下所示:

下面是一個基本示例:

from bert_serving.client import BertClient
bc = BertClient()
bc.encode(['First do it', 'then do it right', 'then do it better'])

執行後的代碼將返回一個 ndarray,每一行是一個句子的固定表示形式。您還可以指定讓它返回純python類型的對象List[List[float]]

作爲BERT的功能,您可以通過連接起來將得到一個對句子的編碼|||,例如,

bc.encode(['First do it ||| then do it right'])

 

遠程使用BERT服務

也可以在一臺(GPU)機器上啓動該服務,然後從另一臺(CPU)機器調用該服務,如下所示:

# on another CPU machine
from bert_serving.client import BertClient
bc = BertClient(ip='xx.xx.xx.xx')  # ip address of the GPU machine
bc.encode(['First do it', 'then do it right', 'then do it better'])

後續將介紹自定義PROCESS的編寫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章