[PYTHON] Langage naturel: BERT Part1 - Corpus Wikipedia japonais

Cible

Nous avons résumé BERT à l'aide du Microsoft Cognitive Toolkit (CNTK).

La première partie se prépare pour BERT.

Je vais les présenter dans l'ordre suivant.

  1. Téléchargez Wikipedia japonais et extrayez des données textuelles
  2. Prétraitement des données de texte et création de modèles de morceaux de phrase
  3. Création d'un corpus de pré-apprentissage

introduction

Télécharger Wikipedia japonais

Cette fois, nous utiliserons Wikipédia japonais comme corpus japonais.

Version japonaise de Wikipedia

Téléchargez jawiki-latest-pages-articles-multistream.xml.bz2 à partir du lien ci-dessus. Utilisez ensuite wikiextractor pour supprimer le langage de balisage.

$ python ./wikiextractor-master/WikiExtractor.py ./jawiki/jawiki-latest-pages-articles-multistream.xml.bz2 -o ./jawiki -b 500M

La structure du répertoire cette fois est la suivante.

BERT  |―jawiki   jawiki-latest-pages-articles-multistream.xml.bz2  |―wikiextractor-master   WikiExtractor.py   ...  bert_corpus.py Doc2Vec NMTT STSA Word2Vec

Prétraitement des données texte et création de modèles de morceaux de phrase

En plus du prétraitement mis en œuvre jusqu'à présent, un prétraitement tel que la normalisation de la notation des crochets et des signes de ponctuation et la suppression des espaces entre les caractères kana-kanji a été exécuté.

Pour la division des mots, créez un modèle de sous-mots à l'aide de la phrase [1]. De plus, \ [CLS], \ [SEP], \ [MASK] sont définis comme des mots spéciaux.

Créer un corpus de pré-apprentissage

Dans le pré-apprentissage de BERT [2], le modèle de langage est formé comme apprentissage non supervisé en masquant les phrases contenues dans le corpus, donc créez des données d'apprentissage pour cela.

Le modèle de langage masqué décide de remplacer 15% de la séquence de mots, avec 80% de chances de la laisser comme un mot spécial \ [MASK], 10% de chances de mot aléatoire et 10% de chances de la laisser telle quelle. Mettre.

De plus, cette fois, nous utiliserons la prédiction de l'ordre des phrases [3] au lieu de la prédiction de la phrase suivante.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-7700 3,60 GHz

Logiciel

・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Nltk 3.4.5 ・ Numpy 1.17.3 ・ Pièce de phrase 0.1.91

Programme à exécuter

Le programme implémenté est publié sur GitHub.

bert_corpus.py


résultat

Lorsque le programme est exécuté, une phrase prétraitée est écrite sur chaque ligne et un corpus japonais est créé avec chaque sujet séparé par des lignes vides.

Le modèle Phrase Piece est ensuite formé pour créer jawiki.model et jawiki.vocab.

Enfin, un fichier texte est créé pour être lu par CTFDeserializer pour le pré-apprentissage.

Maintenant que vous êtes prêt à vous entraîner, la partie 2 utilisera CNTK pour pré-apprendre le japonais sans professeur.

référence

Wikipedia japonais wikiextractor

  1. Taku Kudo and John Richardson. "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing", arXiv preprint arXiv:1808.06226, (2018).
  2. Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", arXiv preprint arXiv:1810.04805, (2018).
  3. Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, and Radu Soricut. "ALBERT: A Lite BERT for self-supervised learning of language representations", arXiv preprint arXiv:1909.11942 (2019).

Recommended Posts

Langage naturel: BERT Part1 - Corpus Wikipedia japonais
Langage naturel: Doc2Vec Part1 --livedoor NEWS Corpus
Langage naturel: BERT Part2 - Préentraînement non supervisé ALBERT
Natural Language: Machine Translation Part1 - Corpus de sous-titres japonais-anglais
[Traitement du langage naturel] Prétraitement avec le japonais
Langage naturel: Word2Vec Part3 - Modèle CBOW
Langage naturel: Doc2Vec Part2 - Classification des documents
Langage naturel: Word2Vec Part2 - Modèle de saut-gramme
Langage naturel: ChatBot Part1-Twitter API Corpus
Langage naturel: GPT - Transformateur de pré-formation génératif japonais
Natural Language: Machine Translation Part2 - Transformateur de traduction automatique neurale
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel