Aplicación simple del modelo de preentrenamiento BERT (análisis de correlación de vector de oración chino)

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

1. Inicie el servicio BERT

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

Supongo que te gusta

Origin blog.csdn.net/Charzous/article/details/113824876
Recomendado
Clasificación