Application simple du modèle de pré-formation BERT (analyse de corrélation vectorielle de phrases chinoises)

table des matières

1. Une simple compréhension de BERT

2. Google BERT et téléchargement du modèle chinois

1. Téléchargement du code source de Google BERT

2. Téléchargez le framework bert-as-server

3. Téléchargement du modèle de pré-formation chinois

Troisièmement, Bert génère des vecteurs de phrases chinoises

1. Démarrez le service BERT

2. Encodage vectoriel de phrases chinoises

Quatre, calcul de similarité cosinus

Cinq, code d'expérimentation complet


1. Une simple compréhension de BERT

Le modèle de pré-formation Google BERT a été largement utilisé dans les domaines de l'apprentissage en profondeur et de la PNL, et a obtenu de bons résultats dans les tâches de classification de texte. Comparé au mot traditionnel incorporant word2vec et golve, l'effet de l'utilisation de la pré-formation bert est meilleur.

Cet article n'analysera pas les principes et les applications avancées de bert en profondeur et en complexité, mais partira de zéro, visant à la compréhension et à l'application simples de BERT pour les débutants, en utilisant le framework bert bert-as-server (architecture CS).

2. Google BERT et téléchargement du modèle chinois

1. Téléchargement du code source de Google BERT

L'adresse complète de téléchargement du code source de Google BERT: https://github.com/google-research/bert

L'explication officielle de BERT:

BERT est une méthode de pré-formation de la représentation du langage, ce qui signifie que nous formons un modèle général de «compréhension du langage» sur un grand corpus de texte (comme Wikipedia), puis que nous utilisons le modèle pour les tâches PNL en aval qui nous intéressent (comme répondre problème). BERT est supérieur aux méthodes précédentes car il s'agit du premier système de traitement du langage naturel de pré-formation bidirectionnel profond et non supervisé.

L'application du code source peut être étudiée plus avant dans le processus d'apprentissage ultérieur, et il est maintenant plus facile d'utiliser le cadre au stade d'introduction.

2. Téléchargez le framework bert-as-server

pip install bert-serving-server   #server
pip install bert-serving-client   #client

3. Téléchargement du modèle de pré-formation chinois

adresse de téléchargement google: https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

Adresse de téléchargement du Harbin Institute of Technology: https://pan.iflytek.com/link/A2483AD206EF85FD91569B498A3C3879  ( mot de passe 0 7 Xj )

Le répertoire de fichiers après décompression est le suivant, y compris le fichier de configuration de bert, le modèle de pré-formation et la liste de vocabulaire.

Troisièmement, Bert génère des vecteurs de phrases chinoises

1. Démarrez le service 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

 Le répertoire de fichiers est le modèle pré-entraîné chinois décompressé à l'étape précédente, et les paramètres peuvent être définis par vous-même.

Effet de démarrage réussi:

2. Encodage vectoriel de phrases chinoises

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()

Le vecteur obtenu pour chaque phrase est exprimé comme suit:

[[0.9737132 -0,0289975 0,23281255 ... 0,21432212 -0,1451838
  -0,26555032]
 [0,57072604 -0,2532929 0,13397914 ... 0,12190636 0,35531974
  -0,2660934]
 [0,33702925 -0,27623484 0,33704653 ... -0,14090805 0,48694345
   0,13270345]
 [0,00974528 -0,04629223 0,48822984 ... - 0,2458026 0,09809375
  -0,08697749]
 [0,29680184 0,13963464 0,30706868 ... 0,05395972 -0,4393276
   0,17769393]] 

Quatre, calcul de similarité cosinus

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

Résultats expérimentaux:

phrase:

'今天天空很蓝,阳光明媚', '今天天气好晴朗'

Similitude: 0.9508827722696014

phrase:

'自然语言处理', '机器学习任务'

Similitude: 0.9187518514435784

phrase:

'今天天空很蓝,阳光明媚', '机器学习任务'

Similitude: 0.7653104788070156

Cinq, code d'expérimentation complet

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()

 

Cet article présente brièvement l'application de base de BERT, en utilisant le framework bert pour encoder des phrases chinoises afin de générer des vecteurs de phrases, et en même temps, il peut analyser la sémantique des phrases.

Le modèle de pré-formation Google BERT a été largement utilisé dans les domaines de l'apprentissage en profondeur et de la PNL, et a obtenu de bons résultats dans les tâches de classification de texte. Comparé au mot traditionnel incorporant word2vec et golve, l'effet de l'utilisation de la pré-formation bert est meilleur.

On peut voir que l'utilisation de base de BERT est relativement simple. Cet article n'analyse pas les principes et les applications avancées de bert en profondeur et en complexité. Au lieu de cela, il part de zéro et se positionne sur la simple compréhension et l'application de BERT pour les débutants , en utilisant le framework bert bert-as- Le serveur (architecture CS) peut être considéré comme un travail de base pour l'étude et la recherche en profondeur.

Si vous pensez que c'est bon, bienvenue à "un clic, trois liens", comme, ajouter à vos favoris, suivre, commenter directement si vous avez des questions, et échanger et apprendre!

Mon blog CSDN: https://blog.csdn.net/Charzous/article/details/113824876

Je suppose que tu aimes

Origine blog.csdn.net/Charzous/article/details/113824876
conseillé
Classement