BERT模型的簡單使用 Python

2021-10-06 20:22:39 字數 2596 閱讀 7563

不涉及原理,只是快速開始使用

更詳細的請參考官方文件

2. 安裝python庫

3. 啟動服務

4. 使用

關於坑

pip install bert-serving-server

pip install bert-serving-client

在命令列輸入

bert-serving-start -model_dir d:\documents\code\pythoncode\bert\model\ -num_worker=1

這條指令啟動了位於-model_dir位址的bert模型,提供乙個工作通道

注意:位址填絕對位址,相對位址可能會出問題(有的人出錯,有的人不出錯)

啟動成功會顯示

一定是顯示all set , ready to serve request!才算啟動成功

和jupyter notebook一樣,在使用bert的過程中這個命令列視窗要保持開啟

encode是將句子轉換為固定長度向量返回,小型的模型的向量長度為768,大型的為1024

encode接收兩種資料形式

一種是list[str],乙個列表,裡面是為分詞的句子,之後得到的矩陣每一行對應乙個句子

比如

[『first do it』, 『then do it right』, 『then do it better』]

另一種是list[list[str]],乙個列表,裡面是分詞完畢的句子詞語的列表,同樣得到的矩陣也是一行對應乙個句子

比如

[[『first』, 『do』, 『it』], [『then』, 『do』, 『it』, 『right』], [『then』, 『do』, 『it』, 『better』]]

一開始安裝的是最新的2.2版本,啟動服務的時候報錯

typeerror: cannot unpack non-iterable nonetype object

解除安裝當前的tensorflow,重新安裝tensorflow

或者直接覆蓋

pip install tensorflow==1.13.0rc1

官方給的教程寫的基本指令是num_worker=4

我電腦太渣,瞬間cpu和記憶體飆滿,但是也不給個報錯memoryerror,廢了好大的勁才發現是記憶體問題

這種有可能是卡在中間,也不報錯,所以一定要記住all set , ready to serve request!才算啟動成功

一開始還是要從num_worker=1開始

一般啟動過程中會有幾秒資源占用很高,過去之後會降下來

如果你提供給他的句子比較長,可能會出現下面這個警告

bert預設句子最長是25,超過了的詞直接被放棄,

舉個栗子

這裡有乙個長句(句子隨便找的)

「in the special period, shanghai will take advantage of chinajoy platform on industry collaboration, international cooperation and create better business environment for the industry, according to the organizers including local government bureaus.」

一共32個詞,它只會取前25個作為特徵來生成向量

如何解決

回到上面的第3步,

更改啟動引數

加一條「max_seq_len=40」

比如

bert-serving-start -model_dir d:\documents\code\pythoncode\bert\model\ -num_worker=1 -max_seq_len=40

如果你不知道自己的資料最長多少,那就設定成none,動態調節,但相應的計算量就上去了,像我這樣電腦渣的,

小風扇呼呼轉,分分鐘cpu、記憶體**給你看。

bert中的sep 語言模型 BERT

今天我們想到 nlp 就會想到 bert,在 nlp 領域中 bert 到處屠榜。bert 主要應用於自然語言處理中的預訓練。這裡想說一件有趣的事,就是當下比較火的自然語言處理模型如 elmo 和 bert 都是動畫片芝麻街中角色。那麼什麼是 bert 呢?我們先從字面上解釋一下什麼是 bert。我...

BERT模型的輸出

想要獲取獲取bert模型的輸出非常簡單,使用 model.get sequence output 和model.get pooled output 兩個方法,但這兩種方法針對nlp的任務需要進行乙個選擇 這個獲取每個token的output 輸出 batch size,seq length,embe...

BERT 中文預訓練模型使用

只要是從事文字處理相關工作的人應該都知道 google 最新發布的 bert 模型,該模型屬於是詞向量的預訓練模型,一經提出便橫掃各大 nlp 任務,最近 google 公司如約推出了中文詞向量的預訓練模型,不得不說這是一件非常有良心的事情,在此膜拜和感謝 google 公司。那麼如何使用 bert...