[PYTHON] Convertir des chaînes de caractères en quantités de caractéristiques avec RoBERTa

supposition

・ Langue: Python3 ・ Bibliothèque: transformateurs

la mise en oeuvre

Le code est ici

1. Importation de la bibliothèque

import transformers
import torch

2. Déterminez le nombre maximum de caractères

Dans la plupart des cas, les chaînes que vous entrez dans le modèle ne seront pas de la même longueur. D'autre part, pour que le modèle effectue des calculs de tenseurs avec ces données de chaîne, les longueurs doivent être identiques. Alors, décidez de la valeur maximale, et si elle n'atteint pas cette longueur, remplissez-la avec des caractères de remplissage jusqu'à cette longueur. (Section suivante)

MAX_LENGTH = 192

4. Remplacez les caractères par ID et ajoutez un jeton spécial

L'explication est ici.

tokenizer = transformers.AutoTokenizer.from_pretrained("roberta-base")
text = "This is a pen."
text2 = "I am a man"

ids = tokenizer.encode(text)
ids2 = tokenizer.encode(text2)

token_ids = tokenizer.build_inputs_with_special_tokens(ids, ids2)

3. Création d'un remplissage et d'un masque d'attention

La mise est comme expliqué dans la section précédente. Le masque d'attention est un caractère qui indique au modèle l'efficacité du personnage et la provenance du rembourrage. Il vaut "1" pour les caractères valides et "0" pour les caractères de remplissage.

#Attention Mask
mask = [1] * len(token_ids)

#Padding
padding_length = MAX_LENGTH - len(token_ids)
if padding_length > 0:
    token_ids = token_ids + ([1] * padding_length)
    mask = mask + ([0] * padding_length)

4. Génération de modèles

Vous pouvez générer ce modèle en donnant à "roberta-base" un nom de modèle différent. D'autres modèles sont ici.

model = transformers.AutoModel.from_pretrained("roberta-base")

5. Convertir les chaînes de caractères en entités du modèle

J'ai transformé la chaîne de caractères entrée jusqu'à présent dans un identifiant. Puisqu'il s'agit d'un type de liste, je vais en faire un type torch.tensor. Lors de l'entrée dans le modèle, la sortie de (1) la couche finale de BertLayer et (2) la sortie de (1) traitée par BertPooler sont sorties. La taille de chacun est comme indiqué dans le résultat de sortie du code ci-dessous.

#Un type qui vous permet de saisir un identifiant et un masque dans le modèle(list -> pytorch.tenrsor)Conversion en
token_ids_tensor = torch.tensor([token_ids], dtype=torch.long)
mask_tensor = torch.tensor([mask], dtype=torch.long)

#conversion
out = model(input_ids=token_ids_tensor, attention_mask=mask_tensor)

print(out[0].shape)
#output
#torch.Size([1, 192, 768])
print(out[1].shape)
#output
#torch.Size([1, 768])

Recommended Posts

Convertir des chaînes de caractères en quantités de caractéristiques avec RoBERTa
Convertir 202003 en 2020-03 avec les pandas
Convertir une chaîne au format de liste caractère par caractère avec python
Comment séparer les chaînes avec ','
Convertir .ipynb en .html (avec BatchFile)
Convertir la liste en DataFrame avec python
Convertir des phrases en vecteurs avec gensim
[Débutant] Extraire des chaînes de caractères avec Python
Convertir un PDF en image avec ImageMagick
Convertir un mémo à la fois avec Python 2to3
Convertir de PDF en CSV avec pdfplumber
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Convertissez des données FX 1 minute en données 5 minutes avec Python
[Introduction à l'application Udemy Python3 +] 11. Chaîne de caractères
Convertir des fichiers PDF en fichiers PNG avec GIMP
Convertir un tableau (struct) en json avec golang
Convertir des nombres chinois en nombres arabes avec Python
Exemple de conversion en ondelettes d'images en Python
Conversion DICOM en PNG avec ordre croissant et décroissant
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Convertir un PDF en image (JPEG / PNG) avec Python
Convertir en HSV
Convertissez des PDF en images en masse avec Python
Convertir mp4 en mp3 avec ffmpeg (version miniature intégrée)
Convertir un fichier svg en png / ico avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Convertissez facilement les notebooks Jupyter en blogs avec Fastpages
[Tentative] Comment convertir une chaîne de caractères en Shift_jis avec kivy-ios Memo kivy v1.8.0
Convertir le code de caractère du fichier avec Python3
Comment convertir (32,32,3) en tenseur à 4 dimensions (1,32,32,1) avec le type ndarray
Comment convertir / restaurer une chaîne avec [] en python
0 Convertir une date non remplie en type datetime avec une expression régulière
Convertir un fichier texte avec des valeurs hexadécimales en fichier binaire
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Convertir des chaînes numériques séparées par des virgules en nombres dans Pandas DataFrame
Convertissez l'image au format .zip en PDF avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Je veux diviser une chaîne de caractères avec hiragana
Mémorandum PyInstaller Convertit Python [.py] en [.exe] avec 2 lignes
Convertissez les variables numériques en variables catégorielles avec les pandas en définissant un seuil
Convertir les kanji en kana
Convertir jupyter en py
Convertir keras-yolo3 en ONNX
Convertir dict en tableau
Convertir json en Excel
[Python3] Soyez prudent avec le décapage (strip, lstrip, rstrip)
Convertir la requête Select obtenue de Postgre avec Go en JSON
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Comment convertir un tableau en dictionnaire avec Python [Application]
Convertir l'espace colorimétrique RVB en CIELAB avec PIL (Pillow)
Convertir des images en sépia avec PIL (Python Imaging Library)
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Je souhaite convertir une chaîne de caractères ISO-8601 en heure japonaise
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Essayez d'extraire les caractéristiques des données de capteur avec CNN