Ich möchte die Verarbeitung mit word2vec ausführen, das bereits in Azure Databricks gelernt wurde. Früher habe ich in meiner lokalen Umgebung word2vec von Python verwendet, aber ich war süchtig danach, weil ich dachte, es würde mit Kopieren und Einfügen funktionieren, also schreibe ich es auf.
Wenn Sie die Schlussfolgerung zuerst schreiben, ** - Mounten Sie das BLOB, das das trainierte Modell hochgeladen hat, auf Databricks und laden Sie es ** ** - Beachten Sie, dass der Fehler "Datei nicht gefunden" angezeigt wird, wenn Sie den Befehl with open beim Laden nicht verwenden. **
Wie der Name schon sagt, werden Wörter in Vektoren umgewandelt. Eine überaus wichtige Technologie, die für die Verarbeitung natürlicher Sprache unverzichtbar ist. Ersetzen Sie eine einfache Wortfolge durch einen Vektor, damit sie mathematisch behandelt werden kann.
"Reis" "Maschinelles Lernen" "Tiefes Lernen" ↓ ↓ ↓
Dies ermöglicht ** die mathematische Berechnung der Ähnlichkeit zwischen Wörtern als räumliche Entfernung **. Es kann mathematisch definiert werden, dass die Wörter "maschinelles Lernen" und das Wort "tiefes Lernen" ähnliche Bedeutungen haben.
Die Grundvoraussetzung von word2vec ist die Idee, dass die Bedeutung eines Wortes durch die umgebenden Wörter gebildet wird. Dies wird als "Verteilungshypothese" bezeichnet.
Um es klar auszudrücken, die Bedeutung eines Wortes kann durch Betrachten der Wörter um es herum abgeleitet werden.
Angenommen, Sie haben die folgende Anweisung: ** ・ [Maschinelles Lernen] Technologie ist für die Realisierung künstlicher Intelligenz unverzichtbar. ** ** ** Selbst wenn das Wort "maschinelles Lernen" unbekannt ist, wird spekuliert, dass dies eine Technologie im Zusammenhang mit künstlicher Intelligenz sein könnte.
Ebenso kann es eine Aussage wie diese geben: ** ・ Die Technologie namens [Deep Learning] hat die Erforschung der künstlichen Intelligenz dramatisch beschleunigt. ** ** **
Durch das Lernen einer so großen Anzahl von Sätzen wird es möglich, die Bedeutung unbekannter Wörter vorherzusagen. Es ist auch ersichtlich, dass [maschinelles Lernen] und [tiefes Lernen], in denen ähnliche Wörter in der Umgebung vorkommen, semantisch ähnlich zu sein scheinen.
Dieses Lernen erfordert jedoch das Lesen einer großen Menge von Dokumenten, und die Lernkosten sind hoch. Daher ist es grundlegend, zuerst ein trainiertes Modell zu verwenden.
Vorbereitung
Ausführung
Es gibt nichts, worüber man vorsichtig sein müsste. Sie können es normalerweise über das Azure-Portal erstellen.
Auch hier gibt es nichts zu beachten. Erstellen Sie einen Container. Die öffentliche Zugriffsebene kann privat sein.
Laden Sie das trainierte Modell anhand des folgenden Artikels herunter. (Übrigens habe ich fastText verwendet)
Liste der gebrauchsfertigen Worteinbettungsvektoren https://qiita.com/Hironsan/items/8f7d35f0a36e0f99752c
Laden Sie die heruntergeladene Datei "model.vec" in den erstellten Container hoch.
Von hier an Operationen am Databricks-Notebook.
Dieser Artikel war sehr leicht zu verstehen.
Analysieren Sie die Daten in Blob mit einer Abfrage! https://tech-blog.cloud-config.jp/2020-04-30-databricks-for-ml/
python
mount_name= "(Beliebiger Name des Mount-Zielverzeichnisses)"
storage_account_name = "(Name des Speicherkontos)"
container_name = "(Containername)"
storage_account_access_key = "(Speicherkonto-Zugriffsschlüssel)"
mount_point = "/mnt/" + mount_name
source = "wasbs://" + container_name + "@" + storage_account_name + ".blob.core.windows.net"
conf_key = "fs.azure.account.key." + storage_account_name + ".blob.core.windows.net"
mounted = dbutils.fs.mount(
source=source,
mount_point = mount_point,
extra_configs = {conf_key: storage_account_access_key}
)
python
import gensim
word2vec_model = gensim.models.KeyedVectors.load_word2vec_format("mount_name/container_name/model.vec", binary=False)
Wenn ich es oben ausführe, wird aus irgendeinem Grund eine Fehlermeldung angezeigt. Warum ist die Halterung richtig gemacht? (Übrigens, wenn es lokal ist, funktioniert es richtig.)
FileNotFoundError: [Errno 2] No such file or directory:
Verwenden Sie also den Befehl with open wie unten gezeigt, um ihn einmal mit f_read zu empfangen und dann zu laden.
python
import gensim
with open("mount_name/container_name/model.vec", "r") as f_read:
word2vec_model = gensim.models.KeyedVectors.load_word2vec_format(f_read, binary=False)
Databricks File System (DBFS) - API für lokale Dateien https://docs.microsoft.com/ja-jp/azure/databricks/data/databricks-file-system#local-file-apis
Diesmal war es ein Erfolg.
Versuch es. Versuchen Sie, das Wort "Japanisch" am nächsten zu bringen.
python
word2vec_model.most_similar(positive=['japanisch'])
Out [3]: [('Chinese', 0.7151615619659424), ("Japanisch", 0,5991291999816895), ("Foreign", 0,5666396617889404), ("Japanisch", 0,5619238018989563), ("Koreanisch", 0,5443094968795776), ("Chinese", 0,5377858877182007), ("Resident in Japan", 0.5263140201568604), ("Chinese", 0,5200497508049011), ("Residenz", 0,5198684930801392), ('International Student', 0.5194666981697083)]
Recommended Posts