用bert生成中文句向量

2021-10-23 04:43:18 字數 1617 閱讀 2531

# -*- 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 ...