Utiliser Python et word2vec (appris) avec Azure Databricks

Objectif de cet article

Je souhaite exécuter un traitement à l'aide de word2vec qui a déjà été appris dans Azure Databricks. J'avais l'habitude d'utiliser word2vec de Python dans mon environnement local, mais j'en étais accro parce que je pensais que cela fonctionnerait avec le copier-coller, alors je vais l'écrire.

Si vous écrivez d'abord la conclusion, ** - Montez le BLOB qui a téléchargé le modèle entraîné sur les données et chargez-le ** ** - Notez que si vous n'utilisez pas la commande with open lors du chargement, vous obtiendrez une erreur "Fichier non trouvé" **

Présentation de word2vec

Word2vec peut gérer mathématiquement la similitude des mots

Comme son nom l'indique, il convertit les mots en vecteurs. Une technologie très importante indispensable au traitement du langage naturel. Remplacez une simple chaîne de mots par un vecteur afin qu'elle puisse être manipulée mathématiquement.

"Rice" "Machine learning" "Deep learning"   ↓     ↓        ↓ image.png

Cela permet ** de calculer mathématiquement la similitude entre les mots en tant que distance spatiale **. On peut définir mathématiquement que les mots «apprentissage automatique» et le mot «apprentissage en profondeur» ont des significations similaires.

C'est difficile d'apprendre par soi-même

La prémisse de base de word2vec est l'idée que le sens d'un mot est formé par les mots environnants. C'est ce qu'on appelle «l'hypothèse de distribution».

Pour le dire clairement, la signification d'un mot peut être déduite en regardant les mots qui l'entourent.

Par exemple, supposons que vous ayez l'instruction suivante: ** ・ La technologie [d'apprentissage automatique] est indispensable pour la réalisation de l'intelligence artificielle. ** ** Même si le mot «apprentissage automatique» est inconnu, il est supposé qu'il pourrait s'agir d'une technologie liée à l'intelligence artificielle.

De même, il peut y avoir une déclaration comme celle-ci: ** ・ La technologie appelée [Deep Learning] a considérablement accéléré la recherche sur l'intelligence artificielle. ** **

En apprenant un si grand nombre de phrases, il devient possible de prédire la signification de mots inconnus. On peut également voir que [l'apprentissage automatique] et [l'apprentissage profond], dans lesquels des mots similaires apparaissent dans la zone environnante, semblent sémantiquement similaires.

Cependant, ces apprentissages nécessitent la lecture d'une grande quantité de documents et le coût de l'apprentissage est élevé. Par conséquent, il est fondamental d'utiliser d'abord un modèle entraîné.

Étapes pour utiliser word2vec avec Azure Databricks


Préparation

  1. Créer des ressources Azure Databricks
  2. Créez un conteneur avec un compte de stockage
  3. Téléchargez le modèle entraîné et stockez-le dans un conteneur


Exécution

  1. Montez le conteneur sur les databricks Azure
  2. Chargez le modèle avec gensim
  3. Exécutez word2vec

Préparation

1. Créer des ressources Azure Databricks

Il n'y a rien à faire attention. Vous pouvez le créer normalement à partir du portail Azure. image.png

2. Créez un conteneur avec un compte de stockage

Encore une fois, il n'y a rien à faire attention. Créez un conteneur. Le niveau d'accès public peut être privé. image.png

3. Téléchargez le modèle entraîné et stockez-le dans un conteneur

Téléchargez le modèle entraîné en vous référant à l'article suivant. (Au fait, j'ai utilisé fastText)

Liste des vecteurs d'incorporation de mots prêts à l'emploi https://qiita.com/Hironsan/items/8f7d35f0a36e0f99752c

Téléchargez le fichier "model.vec" téléchargé dans le conteneur créé.

Courir

A partir de là, opérations sur le notebook Databricks.

1. Montez le conteneur sur les databricks Azure

Cet article était très facile à comprendre.

Analysez les données dans Blob avec une requête! https://tech-blog.cloud-config.jp/2020-04-30-databricks-for-ml/

python


mount_name= "(Nom du répertoire de destination du montage arbitraire)"
storage_account_name = "(Nom du compte de stockage)"
container_name = "(Nom du conteneur)"
storage_account_access_key = "(Clé d'accès au compte de stockage)"

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}
)

2. Chargez le modèle avec gensim

python


import gensim
word2vec_model = gensim.models.KeyedVectors.load_word2vec_format("mount_name/container_name/model.vec", binary=False)

Lorsque je l'exécute ci-dessus, j'obtiens une erreur pour une raison quelconque. Pourquoi la monture est-elle correctement fabriquée? (Au fait, s'il est local, cela fonctionne correctement.)

FileNotFoundError: [Errno 2] No such file or directory:

Donc, utilisez la commande with open comme indiqué ci-dessous pour le recevoir une fois avec f_read, puis chargez-le.

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)

Système de fichiers Databricks (DBFS) - API de fichier local https://docs.microsoft.com/ja-jp/azure/databricks/data/databricks-file-system#local-file-apis

Cette fois, ce fut un succès.

3. Exécutez word2vec

Essaye le. Essayez de mettre le mot le plus proche de «japonais».

python


word2vec_model.most_similar(positive=['Japonais'])

Out [3]: [('Chinese', 0.7151615619659424), ('Japonais', 0,5991291999816895), ('Etranger', 0,5666396617889404), ('Japonais', 0,5619238018989563), ('Coréen', 0.5443094968795776), ('Chinois', 0,5377858877182007), ('Résident au Japon', 0.5263140201568604), ('Chinois', 0,5200497508049011), ('Résidence', 0,5198684930801392), («Étudiant international», 0,5194666981697083)]

Recommended Posts

Utiliser Python et word2vec (appris) avec Azure Databricks
Utilisation de Python et MeCab avec Azure Databricks
Utiliser Python et MeCab avec Azure Functions
Facile! Utilisez gensim et word2vec avec MAMP.
[Python] Utiliser JSON avec Python
Utiliser mecab avec Python 3
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utilisez Python / Django avec Windows Azure Cloud Service!
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Utiliser l'API Trello avec python
Python et matériel - Utilisation de RS232C avec Python -
Utiliser l'API Twitter avec Python
Analyse des émotions par Python (word2vec)
python avec pyenv et venv
Utiliser l'API subsonique avec python3
Fonctionne avec Python et R
API Nifty Cloud facile à utiliser avec botocore et python
Cette fois, j'ai appris python III et IV avec Prorate
Communiquez avec FX-5204PS avec Python et PyUSB
Utiliser MLflow avec Databricks ④ --Call model -
Python: comment utiliser async avec
Utilisation de la base de données SQL d'Azure avec SQL Alchemy
Robot fonctionnant avec Arduino et python
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez vl53l0x avec RaspberryPi (python)
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
[Python / matplotlib] Comprendre et utiliser FuncAnimation
Grattage avec Python, Selenium et Chromedriver
[Python] Programmation orientée objet apprise avec Pokemon
Lire et utiliser des fichiers Python à partir de Python
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Expérience d'apprentissage Perceptron apprise avec Python
Structure de données Python apprise avec la chimioinfomatique
Ramassage efficace du réseau avec Python
Lire et écrire NetCDF avec Python
Utiliser Python mis en pyenv avec NeoVim
Utiliser Azure Blob Storage à partir de Python
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Utiliser la synthèse vocale Windows 10 avec Python
J'ai joué avec PyQt5 et Python3
Utiliser OpenCV avec Python 3 dans Window
Intégration multiple avec Python et Sympy
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python