Tabla de contenido
1. Una comprensión simple de BERT
2. Descarga de modelos de Google BERT y chino
1. Descarga del código fuente de Google BERT
2. Descargue el marco bert-as-server
3. Descarga del modelo de preentrenamiento chino
Tres, bert genera vectores de oraciones en chino
2. Codificación de vectores de frases en chino
Cuatro, cálculo de similitud de coseno
Cinco, código de experimento completo
1. Una comprensión simple de BERT
El modelo de preentrenamiento de Google BERT ha sido ampliamente utilizado en los campos de aprendizaje profundo y PNL, y ha logrado buenos resultados en tareas de clasificación de textos. En comparación con la palabra tradicional que incorpora word2vec y golve, el efecto de utilizar bert antes del entrenamiento es mejor.
Este artículo no analizará los principios y aplicaciones avanzadas de bert en profundidad y complejidad, sino que comenzará desde cero, con el objetivo de comprender y aplicar de forma sencilla BERT para principiantes, utilizando el marco bert bert-as-server (arquitectura CS).
2. Descarga de modelos de Google BERT y chino
1. Descarga del código fuente de Google BERT
La dirección completa de descarga del código fuente de Google BERT: https://github.com/google-research/bert
La explicación oficial de BERT:
BERT es un método de preentrenamiento de la representación del lenguaje, lo que significa que entrenamos un modelo general de "comprensión del lenguaje" en un corpus de texto grande (como Wikipedia), y luego usamos el modelo para las tareas posteriores de PNL que nos interesan (como responder problema). BERT es superior a los métodos anteriores porque es el primer sistema de procesamiento de lenguaje natural bidireccional profundo de preentrenamiento sin supervisión.
La aplicación del código fuente se puede estudiar más a fondo en el proceso de aprendizaje posterior, y ahora es más fácil usar el marco en la etapa introductoria.
2. Descargue el marco bert-as-server
pip install bert-serving-server #server
pip install bert-serving-client #client
3. Descarga del modelo de preentrenamiento chino
dirección de descarga de google: https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
Dirección de descarga del Instituto de Tecnología de Harbin: https://pan.iflytek.com/link/A2483AD206EF85FD91569B498A3C3879 ( contraseña 0 7 Xj )
El directorio de archivos después de la descompresión es el siguiente, incluido el archivo de configuración de bert, el modelo de preentrenamiento y la lista de vocabulario.
Tres, bert genera vectores de oraciones en chino
1. Inicie el servicio BERT
bert-serving-start -model_dir D:\PyCharm_Project\bert-use-demo-master\chinese_bert_chinese_wwm_L-12_H-768_A-12 -max_batch_size 10 -max_seq_len 20 -num_worker 1
El directorio de archivos es el modelo chino previamente entrenado descomprimido en el paso anterior, y usted mismo puede configurar los parámetros.
Efecto de inicio exitoso:
2. Codificación de vectores de frases en chino
from bert_serving.client import BertClient
import numpy as np
def main():
bc = BertClient()
doc_vecs = bc.encode(['今天天空很蓝,阳光明媚', '今天天气好晴朗', '现在天气如何', '自然语言处理', '机器学习任务'])
print(doc_vecs)
if __name__ == '__main__':
main()
El vector obtenido para cada oración se expresa como:
[[0.9737132 -0.0289975 0,23281255 0,21432212 ... -0.1451838
-0.26555032]
[0,57072604 0,13397914 ... -0.2532929 0,12190636 0,35531974
-0.2660934]
[0,33702925 0,33704653 ... -0.27623484 -0.14090805 0,48694345
0,13270345]
[0,00974528 0,48822984 ... -0.04629223 - 0,24558026 0,09809375
-0,08697749]
[0,29680184 0,13963464 0,30706868 ... 0,05395972 -0,4393276
0,17769393]]
Cuatro, cálculo de similitud de coseno
def cos_similar(sen_a_vec, sen_b_vec):
'''
计算两个句子的余弦相似度
'''
vector_a = np.mat(sen_a_vec)
vector_b = np.mat(sen_b_vec)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
return cos
Resultados experimentales:
frase:
'今天天空很蓝,阳光明媚', '今天天气好晴朗'
Similitud: 0.9508827722696014
frase:
'自然语言处理', '机器学习任务'
Similitud: 0.9187518514435784
frase:
'今天天空很蓝,阳光明媚', '机器学习任务'
Similitud: 0.7653104788070156
Cinco, código de experimento completo
from bert_serving.client import BertClient
import numpy as np
def cos_similar(sen_a_vec, sen_b_vec):
'''
计算两个句子的余弦相似度
'''
vector_a = np.mat(sen_a_vec)
vector_b = np.mat(sen_b_vec)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
return cos
def main():
bc = BertClient()
doc_vecs = bc.encode(['今天天空很蓝,阳光明媚', '今天天气好晴朗', '现在天气如何', '自然语言处理', '机器学习任务'])
print(doc_vecs)
similarity=cos_similar(doc_vecs[0],doc_vecs[4])
print(similarity)
if __name__ == '__main__':
main()
Este artículo presenta brevemente la aplicación básica de BERT, utilizando el marco bert para codificar oraciones en chino para generar vectores de oraciones y, al mismo tiempo, puede analizar la semántica de las oraciones.
El modelo de preentrenamiento de Google BERT ha sido ampliamente utilizado en los campos de aprendizaje profundo y PNL, y ha logrado buenos resultados en tareas de clasificación de textos. En comparación con la palabra tradicional que incorpora word2vec y golve, el efecto de utilizar bert antes del entrenamiento es mejor.
Se puede ver que el uso básico de BERT es relativamente simple. Este artículo no analiza los principios y aplicaciones avanzadas de bert en profundidad y complejidad. En cambio, comienza desde cero y se posiciona en la simple comprensión y aplicación de BERT para principiantes. , utilizando el marco bert bert-as- El servidor (arquitectura CS) puede considerarse como una tarea básica para el estudio y la investigación en profundidad.
Si cree que es bueno, bienvenido a "un clic, tres vínculos", haga clic en Me gusta, marque como favorito, siga, comente directamente si tiene alguna pregunta, e intercambie y aprenda.
Mi blog de CSDN: https://blog.csdn.net/Charzous/article/details/113824876