[PYTHON] Konvertieren Sie Zeichenketten mit RoBERTa in Merkmalsmengen

Annahme

・ Sprache: Python3 ・ Bibliothek: Transformatoren

Implementierung

Der Code lautet hier

1. Bibliotheksimport

import transformers
import torch

2. Bestimmen Sie die maximale Anzahl von Zeichen

In den meisten Fällen haben die Zeichenfolgen, die Sie in das Modell eingeben, nicht die gleiche Länge. Andererseits müssen die Längen gleich sein, damit das Modell Tensorberechnungen für diese Zeichenfolgendaten durchführen kann. Bestimmen Sie also den Maximalwert. Wenn dieser Wert nicht erreicht wird, füllen Sie ihn mit Füllzeichen bis zu dieser Länge. (Nächster Abschnitt)

MAX_LENGTH = 192

4. Ersetzen Sie die Zeichen durch die ID und fügen Sie ein spezielles Token hinzu

Die Erklärung ist hier.

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. Padding & Attention Mask erstellen

Das Putten erfolgt wie im vorherigen Abschnitt erläutert. Die Aufmerksamkeitsmaske ist ein Zeichen, das dem Modell mitteilt, wie effektiv das Zeichen ist und woher die Polsterung stammt. Es ist "1" für gültige Zeichen und "0" für das Auffüllen von Zeichen.

#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. Modellgenerierung

Sie können dieses Modell generieren, indem Sie "roberta-base" einen anderen Modellnamen geben. Andere Modelle sind hier.

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

5. Konvertieren Sie Zeichenketten in Features im Modell

Ich habe die bisher eingegebene Zeichenkette in eine ID eingegeben. Da es sich um einen Listentyp handelt, werde ich ihn zu einem torch.tensor-Typ machen. Bei der Eingabe in das Modell werden die Ausgabe von (1) der letzten Schicht von BertLayer und (2) die Ausgabe von (1) ausgegeben, die von BertPooler verarbeitet wurde. Die Größe von jedem ist wie im Ausgabeergebnis des folgenden Codes gezeigt.

#Ein Typ, mit dem Sie eine ID und eine Maske in das Modell eingeben können(list -> pytorch.tenrsor)Umstellung auf
token_ids_tensor = torch.tensor([token_ids], dtype=torch.long)
mask_tensor = torch.tensor([mask], dtype=torch.long)

#Umwandlung
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

Konvertieren Sie Zeichenketten mit RoBERTa in Merkmalsmengen
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
So trennen Sie Zeichenfolgen mit ','
Konvertieren Sie .ipynb in .html (mit BatchFile)
Konvertieren Sie die Liste mit Python in DataFrame
Konvertieren Sie Sätze mit gensim in Vektoren
[Anfänger] Extrahieren Sie Zeichenketten mit Python
Konvertieren Sie PDF in Image mit ImageMagick
Konvertieren Sie Memos sofort mit Python 2to3
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren Sie Excel-Daten mit Python in JSON
Konvertiere Hiragana mit Python (Beta) in Romaji
[Einführung in die Udemy Python3 + -Anwendung] 11. Zeichenkette
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Konvertieren Sie ein Array (struct) mit golang in json
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
Beispiel für die Wavelet-Konvertierung von Bildern in Python
DICOM zu PNG Konvertierung mit aufsteigend und absteigend
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Zum HSV konvertieren
Konvertieren Sie PDFs mit Python in Massenbilder
Konvertieren Sie mp4 in mp3 mit ffmpeg (eingebettete Thumbnail-Version)
Konvertieren Sie die SVG-Datei mit Python in png / ico
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Konvertieren Sie Jupyter-Notizbücher ganz einfach in Blogs mit Fastpages
[Vorläufig] So konvertieren Sie eine Zeichenfolge mit kivy-ios Memo kivy v1.8.0 in Shift_jis
Konvertieren Sie den Zeichencode der Datei mit Python3
Konvertieren von (32,32,3) in einen 4-dimensionalen Tensor (1,32,32,1) mit ndarray-Typ
So konvertieren / wiederherstellen Sie einen String mit [] in Python
0 Konvertieren Sie nicht ausgefülltes Datum in Datums- / Uhrzeittyp mit regulärem Ausdruck
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
Konvertieren Sie durch Kommas getrennte numerische Zeichenfolgen in Zahlen in Pandas DataFrame
Konvertieren Sie das Bild in .zip mit Python in PDF
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Ich möchte eine Zeichenkette mit Hiragana teilen
PyInstaller-Memorandum Konvertieren Sie Python [.py] in [.exe] mit 2 Zeilen
Konvertieren Sie numerische Variablen mit Pandas in kategoriale Variablen, indem Sie einen Schwellenwert festlegen
Konvertiere Kanji in Kana
Jupyter in py umwandeln
Konvertiere keras-yolo3 in onnx
Dikt in Array konvertieren
Konvertieren Sie json in Excel
[Python3] Sei vorsichtig beim Strippen (Strip, Lstrip, Rstrip)
Konvertieren Wählen Sie die von Postgre erhaltene Abfrage mit Gehe zu JSON
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Konvertieren Sie den Farbraum von RGB nach CIELAB mit PIL (Pillow)
Konvertieren Sie Bilder mit PIL (Python Imaging Library) in Sepia.
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Ich möchte eine ISO-8601-Zeichenfolge in japanische Zeit konvertieren
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren