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.
--Einführung --Inflation 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.
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)
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.
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!
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.
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