[PYTHON] Einfaches Auffüllen von Daten, die in der Verarbeitung natürlicher Sprache verwendet werden können

Einführung

Deep Learning erfordert eine große Menge an Lerndaten, aber die Realität ist, dass es nicht möglich ist, so viele Daten in der realen Welt zu sammeln. Vor diesem Hintergrund hat sich die Technik des Lernens mit einer kleinen Datenmenge in den letzten Jahren verbreitet. Es gibt drei Möglichkeiten, mit weniger Daten zu lernen:

--Verwenden Sie qualitativ hochwertige Daten --Aufgeblasen

In diesem Artikel konzentrieren wir uns auf das "Aufblasen" von Daten, die die Übersetzung in andere Sprachen verwenden, die in der Verarbeitung natürlicher Sprache verwendet werden, welche Art von Technik überhaupt "aufblasen" und wie das "Aufblasen" durchgeführt wird. Ich möchte tatsächlich "aufgeblasen" implementieren und gleichzeitig festlegen, worauf zu achten ist.

Inhaltsverzeichnis

--Einführung --Inflation von Daten in der Verarbeitung natürlicher Sprache

Aufblasen von Daten in der Verarbeitung natürlicher Sprache

"Aufblasen" ist eine Technik, die ** die ursprünglichen Trainingsdaten konvertiert, um die Datenmenge zu erhöhen ** und häufig nicht nur in der Verarbeitung natürlicher Sprache, sondern auch in der Bildverarbeitung verwendet wird. Abgesehen davon ist das ursprüngliche Wort für "aufgeblasen" "Datenerweiterung", was wörtlich "Datenerweiterung" bedeutet.

Analytische Umgebung und Vorbereitungen

Die Implementierung in diesem Artikel verwendet den Kaggle-Kernel. Die Spezifikationen und Einstellungen der diesmal verwendeten Kaggle-Umgebung sind unten aufgeführt.

Vergessen Sie nicht, das Internet einzuschalten, wenn Sie den Kaggle-Kernel verwenden. Wenn Sie die lokale Umgebung verwenden, geben Sie den folgenden Befehl in die Eingabeaufforderung ein, um jedes Modul zu installieren.

pip install -U joblib textblob
python -m textblob.download_corpora

Stellen Sie das Modul wie folgt ein.

augmentation.py


# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in 

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# augmentation
from joblib import Parallel, delayed
from textblob import TextBlob
from textblob.translate import NotTranslated

# sleep
from time import sleep 

# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory

import os
print(os.listdir("../input"))

# Any results you write to the current directory are saved as output.

Die diesmal verwendeten Daten sind der Datensatz des Kaggle-Wettbewerbs mit dem Namen Jigsaw Unintended Bias in Toxicity Classification. .. Bei diesem Übersetzungsprozess wird keine Vorverarbeitung durchgeführt, und nur die ersten 100 Datensätze werden zur Testverwendung extrahiert.

augmentation.py


# importing the dataset
train=pd.read_csv("../input/train.csv")
train=train.head(100)

Übersetzungsprozess

Sobald jedes Modul und alle Daten fertig sind, möchte ich den Übersetzungsprozess durchführen. Als Test möchte ich den folgenden Code ausführen, um den auf * x * gesetzten Beispielsatz vom Englischen ins Japanische zu übersetzen.

augmentation.py


# a random example
x = "Great question! It's one we're asked a lot. We've designed the system assuming that people *will* try to abuse it. So, in addition to the peer reviews, there are algorithms on the backend doing a lot of meta-analysis. I'm sure the system isn't 100% perfect yet, but we know from months of beta testing that it's a really solid start, and we'll keep working to improve it!"

# translate
analysis = TextBlob(x)
print(analysis)
print(analysis.translate(to='ja'))

Dann denke ich, dass das folgende Ergebnis zurückgegeben wird.

Great question! It's one we're asked a lot. We've designed the system assuming that people *will* try to abuse it. So, in addition to the peer reviews, there are algorithms on the backend doing a lot of meta-analysis. I'm sure the system isn't 100% perfect yet, but we know from months of beta testing that it's a really solid start, and we'll keep working to improve it!
Gute Frage. Das ist es, wonach wir viel suchen. Wir haben das System unter der Annahme entworfen, dass die Leute versuchen würden, es zu missbrauchen. Zusätzlich zu Peer Reviews gibt es im Backend Algorithmen, die viele Metaanalysen durchführen. Ich bin mir sicher, dass das System noch nicht zu 100% perfekt ist, aber wir wissen, dass es ein wirklich solider Start nach Monaten des Betatests ist, und wir bemühen uns, es zu verbessern weitermachen!

Es scheint, dass Sie es gut übersetzen konnten. Um die Vielseitigkeit des ausgeführten Übersetzungsprozesses zu erhöhen, werden wir als nächstes den Teil des Übersetzungsprozesses zu einer Funktion machen. In diesem Übersetzungsprozess möchte ich es in drei Sprachen machen: Spanisch, Deutsch und Französisch. Definieren Sie zunächst die für die Übersetzung verwendete Sprache, die Anzahl der bei der Parallelverarbeitung verwendeten Kerne und die Ausgabefrequenz des Fortschritts als Parameter.

augmentation.py


languages = ["es", "de", "fr"]
parallel = Parallel(n_jobs=-1, backend="threading", verbose=5)

Definieren Sie als Nächstes die Übersetzungsverarbeitungsfunktion. Der folgende Code ist die eigentliche Funktion des Übersetzungsprozesses.

augmentation.py


def translate_text(comment, language):
    if hasattr(comment, "decode"):
        comment = comment.decode("utf-8")
    text = TextBlob(comment)
    try:
        text = text.translate(to=language)
        sleep(0.4)
        text = text.translate(to="en")
        sleep(0.4)
    except NotTranslated:
        pass
    return str(text)

Als Punkt der obigen Verarbeitung wird die Schlaffunktion des Zeitmoduls verwendet, um die Übersetzungsverarbeitung vorübergehend zu stoppen. Der Grund, warum die Pause hier eingefügt wird, ist, dass der folgende Fehler auftritt, wenn sie nicht eingefügt wird.

HTTPError: HTTP Error 429: Too Many Requests

Wir werden den Übersetzungsprozess tatsächlich unter Verwendung der oben definierten Parameter und Funktionen durchführen. Der Übersetzungsprozess kann mit dem folgenden Code ausgeführt werden.

augmentation.py


comments_list = train["comment_text"].fillna("unknown").values

for language in languages:
    print('Translate comments using "{0}" language'.format(language))
    translated_data = parallel(delayed(translate_text)(comment, language) for comment in comments_list)
    train['comment_text'] = translated_data
    result_path = os.path.join("train_" + language + ".csv")
    train.to_csv(result_path, index=False)

Nach dem Ausführen des obigen Prozesses sollte das Protokoll wie folgt ausgegeben werden.

Translate comments using "es" language

[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 4 concurrent workers.
[Parallel(n_jobs=-1)]: Done  10 tasks      | elapsed:    2.5s
[Parallel(n_jobs=-1)]: Done  64 tasks      | elapsed:   13.4s
[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   20.8s finished

Translate comments using "de" language

[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 4 concurrent workers.
[Parallel(n_jobs=-1)]: Done  10 tasks      | elapsed:    2.5s
[Parallel(n_jobs=-1)]: Done  64 tasks      | elapsed:   13.2s
[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   20.7s finished
[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 4 concurrent workers.

Translate comments using "fr" language
[Parallel(n_jobs=-1)]: Done  10 tasks      | elapsed:    2.5s
[Parallel(n_jobs=-1)]: Done  64 tasks      | elapsed:   13.6s
[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   21.4s finished

Wenn Sie alle fertig sind, sollte das Ergebnis des Übersetzungsprozesses als CSV-Datei ausgegeben werden.

Das Ergebnis der Polsterung

Schauen wir uns das Ergebnis der Ausgabeübersetzung am Beispiel des folgenden Originaltextes an.

** Original **

Great question! It's one we're asked a lot. We've designed the system assuming that people will try to abuse it. So, in addition to the peer reviews, there are algorithms on the backend doing a lot of meta-analysis. I'm sure the system isn't 100% perfect yet, but we know from months of beta testing that it's a really solid start, and we'll keep working to improve it!

Im Vergleich zum Originaltext können Sie feststellen, dass sich der Text in den folgenden Übersetzungsergebnissen geringfügig geändert hat.

** Englisch-> Spanisch-> Englisch **

Great question It is one that they ask us a lot. We have designed the system assuming that people will try to abuse it. So, in addition to peer reviews, there are algorithms in the backend that perform many meta-analyzes. I'm sure the system is not 100% perfect yet, but we know for months of beta testing that it's a really solid start, and we'll keep working to improve it!

** Englisch-> Deutsch-> Englisch **

Good question! We are often asked about it. We designed the system on the assumption that people will try to abuse it. In addition to the peer reviews, there are backend algorithms that do a lot of meta-analysis. I'm sure the system is not 100% perfect yet, but we know from months of beta testing that it's a really solid start, and we'll continue to work on improving it!

** Englisch-> Französisch-> Englisch **

Good question! We are asked a lot. We designed the system on the assumption that people will * try * to abuse it. Thus, in addition to peer reviews, there are algorithms on the backend that do a lot of meta-analysis. I'm sure the system is not 100% perfect yet, but months of beta testing have taught us that it was a good start, and we will continue to improve it!

Referenzinformationen

Einführung in die Websites, die als Referenz für diesen Artikel dienten, und Websites, die sich mit verwandten Themen befassen.

TextBlob: Simplified Text Processing: Wenn Sie mehr über "Text Blob" erfahren möchten, das für die Übersetzungsverarbeitung verwendet wird, lesen Sie bitte hier.

[Erläuterung aller Argumente von Parallel of Joblib](https://own-search-and-study.xyz/2018/01/17/ Erläuterung aller Argumente von Parallel of Joblib /): Über die Bibliothek "Joblib" für die Parallelverarbeitung werden auch die anderen als die in diesem Artikel verwendeten Argumente erläutert.

Lernen aufblasen und übertragen (Band 7): Es behandelt die Technik des "Aufblasens" in der Bildverarbeitung.

Schließlich

Wenn ich schließlich ein Modell mit aufgeblasenen Daten erstelle, möchte ich darüber sprechen, wie sich die Ähnlichkeit zwischen der Originalsprache und der in der Übersetzung verwendeten Sprache beim nächsten Mal auf die Genauigkeit des Modells auswirkt.

Recommended Posts

Einfaches Auffüllen von Daten, die in der Verarbeitung natürlicher Sprache verwendet werden können
Leistungsüberprüfung der Datenvorverarbeitung in der Verarbeitung natürlicher Sprache
Einfache Programminstallation und automatische Programmaktualisierung, die in jeder Sprache verwendet werden kann
Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können
Funktionen, die in der for-Anweisung verwendet werden können
Maximale Anzahl von Funktionsparametern, die in jeder Sprache definiert werden können
Unerträgliche Aufmerksamkeitsmangel bei der Verarbeitung natürlicher Sprache
Persönliche Notizen zu Pandas-bezogenen Vorgängen, die in der Praxis verwendet werden können
Zusammenfassung der Scikit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können
Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können
ANTs Bildregistrierung, die in 5 Minuten verwendet werden kann
Überblick über die Verarbeitung natürlicher Sprache und ihre Datenvorverarbeitung
Arten der Vorverarbeitung in der Verarbeitung natürlicher Sprache und ihre Leistungsfähigkeit
Python3-Verarbeitung, die in Paiza verwendbar zu sein scheint
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann
Goroutine, die im Feld verwendet werden kann (errgroup.Group Edition)
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Bewertungsindex, der für GridSearchCV von sklearn angegeben werden kann
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Ich habe es gemacht, weil ich JSON-Daten möchte, die in Demos und Prototypen frei verwendet werden können
100 Sprachverarbeitung Knock-91: Vorbereitung von Analogiedaten
Verarbeiten Sie den Namen der Yugioh-Karte in natürlicher Sprache - Yugiou Data Science 2. NLP
[WIP] Vorverarbeiten von Notizen in der Verarbeitung natürlicher Sprache
Akustisches Signalverarbeitungsmodul, das mit Python-Sounddevice ASIO [Anwendung] verwendet werden kann
Python-Sound Gerät ASIO akustisches Signalverarbeitungsmodul [Basic]
Ich habe einen Tri-Tree geschrieben, der für die Implementierung von Hochgeschwindigkeitswörterbüchern in D-Sprache und Python verwendet werden kann
Dateitypen, die mit Go verwendet werden können
Erstellen von Sphinx, das mit Markdown geschrieben werden kann
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Python: Deep Learning in der Verarbeitung natürlicher Sprache: Implementierung eines Antwortsatzauswahlsystems
Liste der Tools, mit denen Sie auf einfache Weise die Emotionsanalyse japanischer Sätze mit Python ausprobieren können (versuchen Sie es mit Google Colab).
[Python] Ich habe eine Praxis untersucht, die durch asynchrone Verarbeitung (Multiprocessing, Asyncio) parallel zum Hauptthread ausgeführt werden kann.
Übersicht und nützliche Funktionen von Scikit-Learn, die auch für Deep Learning verwendet werden können
Einführung des automatischen Bildersammlungspakets "icrawler" (0.6.3), das beim maschinellen Lernen verwendet werden kann
Visualisierung von geografischen Informationen von R und Python, die von Power BI ausgedrückt werden können
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Merkmalsmenge, die aus Zeitreihendaten extrahiert werden kann
Japan kann in Bezug auf die Programmiersprache Galapagos sein
Modell unter Verwendung eines Faltungsnetzwerks in der Verarbeitung natürlicher Sprache
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
[Django] Über Benutzer, die für Vorlagen verwendet werden können
Lernen Sie mit "Google Colaboratory" ganz einfach 100 Sprachverarbeitungsklopfen 2020.
Python: Verarbeitung natürlicher Sprache
Einfache Statistiken, mit denen die Auswirkungen von Maßnahmen auf EG-Standorte und Codes analysiert werden können, die in Jupyter-Notebooks verwendet werden können
RNN_LSTM2 Verarbeitung natürlicher Sprache
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
[Verarbeitung natürlicher Sprache] Ich habe versucht, die Bemerkungen jedes Mitglieds in der Slack-Community zu visualisieren
Verarbeitung natürlicher Sprache (Originaldaten) mit Word2Vec, entwickelt von US-amerikanischen Google-Forschern
Formatübersicht der Formate, die mit gensim serialisiert werden können
Grundkenntnisse in DNS, die jetzt nicht zu hören sind
Textanalyse, die in 5 Minuten durchgeführt werden kann [Word Cloud]