https://blog.csdn.net/qq_34832393/article/details/90414293
使用 bert-as-service 生成詞向量
bert-as-service 是騰訊 AI Lab 開源的一個 BERT 服務,它讓用戶可以以調用服務的方式使用 BERT 模型而不需要關注 BERT 的實現細節。bert-as-service 分爲客戶端和服務端,用戶可以從 python 代碼中調用服務,也可以通過 http 的方式訪問。
安裝
使用 pip 命令進行安裝,客戶端與服務端可以安裝在不同的機器上:
pip install bert-serving-server # 服務端
pip install bert-serving-client # 客戶端,與服務端互相獨立
下載預訓練模型
根據 NLP 任務的類型和規模不同,Google 提供了多種預訓練模型供選擇:
- BERT-Base, Chinese: 簡繁體中文, 12-layer, 768-hidden, 12-heads, 110M parameters
- BERT-Base, Multilingual Cased: 多語言(104 種), 12-layer, 768-hidden, 12-heads, 110M parameters
- BERT-Base, Uncased: 英文不區分大小寫(全部轉爲小寫), 12-layer, 768-hidden, 12-heads, 110M parameters
- BERT-Base, Cased: 英文區分大小寫, 12-layer, 768-hidden, 12-heads , 110M parameters
- 也可以使用中文效果更好的哈工大版 BERT:Chinese-BERT-wwm
以上列出了幾個常用的預訓練模型,可以到 這裏 查看更多。
解壓下載到的 .zip 文件以後,會有 6 個文件:
TensorFlow 模型文件(bert_model.ckpt) 包含預訓練模型的權重,模型文件有三個
字典文件(vocab.txt) 記錄詞條與 id 的映射關係
配置文件(bert_config.json ) 記錄模型的超參
啓動 BERT 服務
使用 bert-serving-start 命令啓動服務:bert-serving-start -model_dir /tmp/english_L-12_H-768_A-12/ -num_worker=2
其中,-model_dir 是預訓練模型的路徑,-num_worker 是線程數,表示同時可以處理多少個併發請求
如果啓動成功,服務器端會顯示:
在客戶端獲取句向量
可以簡單的使用以下代碼獲取語料的向量表示:
from bert_serving.client import BertClient
bc = BertClient()
doc_vecs = bc.encode(['First do it', 'then do it right', 'then do it better'])