# -*- coding:utf-8 -*-
from bert_serving.client import bertclient
# 先命令列啟動服務
# bert-serving-start -model_dir c:\users\jason\pycharmprojects\code\chinese_l-12_h-768_a-12 -num_worker=1
bc = bertclient()
li = ['中國', '美國', '澳大利亞', '張三', '李四光', '王五']
vecs = bc.encode(li)
print(vecs)
'''[[-0.0390969 0.31393334 -0.27065212 ... 0.0390013 0.20890802
-0.60300004]
[-0.24806768 0.38532856 -0.52268803 ... -0.10465756 0.1740241
-0.14918919]
[ 0.02828223 -0.0312206 -0.32512292 ... 0.04085304 -0.16347478
0.17889954]
[-0.11576433 0.00136624 -0.49223953 ... -0.28085837 0.07880631
-0.16971125]
[ 0.01214948 -0.24585013 -0.33325458 ... 0.19059595 -0.05608995
0.2963084 ]
[ 0.02908353 0.04309463 -0.36560717 ... 0.08774196 0.55095494
-0.43377402]]
'''print("vecs型別:", type(vecs))
print("vecs維度", vecs.shape) # vecs維度 (6, 768)
for i, vec in enumerate(vecs):
print("vec型別:", type(vec))
print("vec維度", vec.shape)
print("vec元素總數", vec.size)
# print(li[i], vec)
# vec型別: # vec維度 (768,) 這個也應該是代表一行768列
# vec元素總數 768
vec1 = bc.encode(['csdn中文it知識服務集團,業務有it資訊傳播、技術交流。教育培訓和專業技術人才服務。旗下有網路社群、學習平台和交流平台。'])
print("vec句子型別:", type(vec1))
print("vec句子維度", vec1.shape) # vec句子維度 (1, 768), vec句子元素總數 768
print("vec句子元素總數", vec1.size)
# print(vec1)
'''當encode中列表只有乙個字串元素的時候,返回是(1,768)維度向量。
當encode中列表有多個字串元素的時候,返回是(多,768)維度向量,其中每乙個是(768,)維度。
'''
bert生成句子向量
2.如何使用bert的詞向量 3.直接使用bert原始碼生成詞向量 bert本質上是乙個兩段式的nlp模型。第乙個階段叫做 pre training,跟wordembedding類似,利用現有無標記的語料訓練乙個語言模型。第二個階段叫做 fine tuning,利用預訓練好的語言模型,完成具體的nl...
使用BERT獲取中文詞向量
bert其中的乙個重要作用是可以生成詞向量,它可以解決word2vec中無法解決的一詞多義問題。然而bert獲取詞向量的門檻要比word2vec要高得多。筆者在這裡介紹一下如何獲取bert的詞向量。筆者在獲取bert詞向量的時候用到了肖涵博士的bert as service,具體使用方式如下。接著可...
獲得Bert預訓練好的中文詞向量
安裝肖涵博士的bert as service pip install bert serving server pip install bert serving client 啟動bert as service 找到bert serving start.exe所在的資料夾 我直接用的anaconda ...