[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt

Ich habe gehört, dass verschiedene Tools für die Verarbeitung natürlicher Sprache mit Python ausprobiert werden können, also habe ich mit ihnen herumgespielt. Ich kann den Algorithmus überhaupt nicht sehen, aber es ist erstaunlich, dass Sie in nur wenigen Zeilen etwas Interessantes tun können.

Ausführungsumgebung

Google ColabNotebook

Was ich versucht habe

Installieren Sie zunächst Transformatoren und definieren Sie, was Sie benötigen.

pip install transformers

lang.py


import torch
from transformers import pipeline
sentiment_analysis = pipeline('sentiment-analysis')
question_answering = pipeline('question-answering')
fill_mask = pipeline("fill-mask")
feature_extraction = pipeline("feature-extraction")

Diesmal habe ich mit den oben genannten vier gespielt. Schauen wir uns jeden unten an.

sentiment-analysis Es gibt den positiven / negativen Grad des Eingabesatzes aus.

lang.py


sentiment_analysis("Because of the pandemic, I decided to refrain from going out.")
# => [{'label': 'NEGATIVE', 'score': 0.9692758917808533}]

Es wird erwartet, dass es mit großer Wahrscheinlichkeit negativ ist.

question-answering Wenn Sie einen Fragensatz und einen Situationserklärungssatz geben (es gibt ein zu beantwortendes Wort), wird die Antwort zurückgegeben.

lang.py


question_answering({
    'question': 'What is the cause of the pandemic?',
    'context' : 'The coronavirus triggered an outbreak, and society was thrown into chaos.'
})
# => {'answer': 'coronavirus', 'end': 15, 'score': 0.6689822122523879, 'start': 4}

Sie haben die richtige Antwort. (Wenn ich jedoch verschiedene andere Dinge ausprobierte, gab es manchmal einen Fehler zurück, so dass der Algorithmus leicht zu verstehen ist. Es scheint, dass er nur funktioniert, wenn es sich um einen Satz handelt.)

fill-mask Wenn Sie an einer Stelle einen Satz mit eingeben, wird ein Wort zurückgegeben, das im Leerzeichen zutreffend zu sein scheint.

lang.py


fill_mask("I have to be in bed all day today because I get <mask>.")
'''
 => [{'score': 0.2714517414569855,
  'sequence': '<s> I have to be in bed all day today because I get tired.</s>',
  'token': 7428},
 {'score': 0.19346608221530914,
  'sequence': '<s> I have to be in bed all day today because I get sick.</s>',
  'token': 4736},
 {'score': 0.07417058944702148,
  'sequence': '<s> I have to be in bed all day today because I get headaches.</s>',
  'token': 20816},
 {'score': 0.05399525910615921,
  'sequence': '<s> I have to be in bed all day today because I get insomnia.</s>',
  'token': 37197},
 {'score': 0.05070624500513077,
  'sequence': '<s> I have to be in bed all day today because I get sleepy.</s>',
  'token': 33782}]
'''

Alles sieht gut aus. (Es tut mir leid für all die Beispielsätze, die deprimierend erscheinen.)

feature-extraction Es wird ein Vektor zurückgegeben, der die Eigenschaften des eingegebenen Satzes darstellt. Im Gegensatz zu den obigen drei ist es ein Rückgabewert von nur numerischen Werten, aber ich dachte, dass es einfach wäre, Sätze mit meinem eigenen Modell zu behandeln, wenn ich dies verwenden würde. (Ich möchte eines Tages etwas tun)

lang.py


array = feature_extraction("I catch a cold.")

import numpy as np
np.array(array).shape
# => (1, 7, 768)

array[0][0][:10]
'''
 => [0.3683673143386841,
 0.008590285666286945,
 0.04184938594698906,
 -0.08078824728727341,
 -0.20844608545303345,
 -0.03908906877040863,
 0.19680079817771912,
 -0.12569604814052582,
 0.010193285532295704,
 -1.1207540035247803]
'''

Es wurde ein Listentyp mit den oben genannten Dimensionen und Werten zurückgegeben. Trotzdem, so viele Daten zu verwenden, um den einzelnen Satz "Ich habe mich erkältet" zu verstehen. ..

Noch etwas unten.

lang.py


array = feature_extraction("I catch a cold and I am sleepy.")

import numpy as np
np.array(array).shape
# => (1, 11, 768)

array[0][0][:10]
'''
 => [0.3068505525588989,
 0.026863660663366318,
 0.17733855545520782,
 0.03574731573462486,
 -0.12478257715702057,
 -0.22214828431606293,
 0.2502932548522949,
 -0.17025449872016907,
 -0.09574677795171738,
 -0.9091089963912964]
'''

Die zweite Dimension hat sich geändert. Die letzte Dimension, 768, scheint sich nicht zu ändern.

Recommended Posts

[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
Python: Verarbeitung natürlicher Sprache
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
3. Verarbeitung natürlicher Sprache durch Python 1-1. Word N-Gramm
100 Sprachverarbeitungsklopfen mit Python 2015
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Ich habe mit PyQt5 und Python3 gespielt
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Ich habe eine funktionale Sprache mit Python ausprobiert
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
Ich habe mit Wordcloud gespielt!
RNN_LSTM2 Verarbeitung natürlicher Sprache
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Bildverarbeitung mit Python
Ich werde eine detaillierte Erklärung zum Tod schreiben, während ich 100 Python für die Verarbeitung natürlicher Sprache 2020 mit Python löse
Lassen Sie uns die Verarbeitung natürlicher Sprache mit der COTOHA-API genießen
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
Ich habe versucht, mit der Bibliothek GiNZA zur Verarbeitung natürlicher Sprache eindeutige Ausdrücke zu extrahieren
[Python] [Verarbeitung natürlicher Sprache] Ich habe Deep Learning ausprobiert (auf Japanisch von Grund auf neu erstellt)
3. Verarbeitung natürlicher Sprache durch Python 3-1. Wichtiges Tool zur Wortextraktion TF-IDF-Analyse [Originaldefinition]
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitung mit Python (Teil 2)
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
"Apple-Verarbeitung" mit OpenCV3 + Python3
Ich habe einen Blackjack mit Python gemacht!
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Bildverarbeitung mit Python (Teil 1)
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Bildverarbeitung mit Python (3)
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
Ich habe gRPC mit Python ausprobiert
Python: Vektordarstellung in natürlicher Sprache
Ich habe versucht, mit Python zu kratzen
Ich habe mit Python einen Blackjack gemacht.
Ich habe Wordcloud mit Python gemacht.
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
[Python] Bildverarbeitung mit Scicit-Image
Ich habe versucht, Mr. Hanyu und Mr. Hanyu mit dem Verarbeiter der Verarbeitung natürlicher Sprache × Naive Bayes zu klassifizieren
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
Die erste künstliche Intelligenz. Ich wollte die Verarbeitung natürlicher Sprache ausprobieren, daher werde ich die morphologische Analyse mit MeCab mit Python3 versuchen.
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren