Utiliser Python et MeCab avec Azure Functions

Objectif de cet article

Je souhaite effectuer un traitement simple du langage naturel (analyse morphologique + α) à l'aide de MeCab dans le prétraitement d'Azure Data Factory. Ce serait pratique si vous pouviez l'implémenter en tant que fonction et l'appeler plus tard à partir de divers services tels que LogicApps. J'ai donc envisagé deux méthodes de mise en œuvre.

  1. Fonctions Azure (cet article)
  2. Azure DataBricks (Utilisation de Python et MeCab avec Azure Databricks)

Comme il n'effectue pas de traitement lourd comme l'apprentissage automatique, Azure Functions sera suffisant, je l'ai donc implémenté.

Si vous écrivez d'abord la conclusion ** ・ Les fonctions déclenchées par la requête HTTP des fonctions Azure peuvent être implémentées en se référant à l'URL suivante **

Créer un projet Azure Functions à l'aide de Visual Studio Code https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-csharp

** ・ Mecab peut également être utilisé côté Fonctions en ajoutant "mecab-python3" à requirements.txt de .vscode **

** ・ Le niveau mensuel gratuit d'Azure Functions est plutôt généreux, vous pouvez donc l'essayer gratuitement pendant un certain temps **

Le reste est un mémorandum de quelques points d'achoppement.

Il y a de nombreux points de manque de compréhension, veuillez donc signaler toute erreur.

Vue d'ensemble des fonctions Azure

Une plate-forme informatique sans serveur basée sur les événements. Il est activé par le déclencheur défini et ne consomme des ressources informatiques que pendant l'exécution de la fonction, ce qui permet de réduire les coûts inutiles.

Le système de facturation

Il existe trois plans d'hébergement pour Functions, mais le "plan de paiement à l'utilisation" à l'extrême gauche est le soi-disant sans serveur normal. Cette fois, j'ai choisi ceci. スクリーンショット 2020-05-04 19.32.56.png

Paramètres Azure Functions-Price https://azure.microsoft.com/ja-jp/services/functions/#pricing

La facturation est déterminée par le nombre d'exécutions, le temps d'exécution et l'utilisation de la mémoire. Il y a une trame gratuite qui est réinitialisée tous les mois, et il semble qu'elle soit gratuite jusqu'à «1 million d'exécutions» et «400 000 Go secondes».

Pile d'exécution (langue)

Vous pouvez choisir parmi .Net Core, Node.js, Python, Java, Powershell Core. Une chose à noter est que si vous choisissez Python pour votre pile d'exécution, votre système d'exploitation ne prendra en charge que Linux. Actuellement, le plan Linux pay-as-you-go n'est pas pris en charge dans les deux régions du Japon, il est donc nécessaire de sélectionner une autre région. (À partir de mai 2020)

Les régions prises en charge sont "[Produits disponibles par région](https://azure.microsoft.com/en-us/global-infrastructure/services/?products=functions&regions=us-east,us-east-2,us -central, us-north-central, us-south-central, us-west-central, us-west, us-west-2, japan-west, japan-east) ".

déclencheur

Les déclencheurs pour le lancement des fonctions incluent la requête HTTP, le minuteur, le BLOB, le eventhub, etc. Cette fois, il semble facile à utiliser, donc je l'ai implémenté avec HTTP Request pour le moment. Il semble facile à utiliser lors de la création d'un fichier BLOB.

Créer des applications de fonctions à partir du portail Azure

Je voulais utiliser Python dans un plan de paiement à l'utilisation, alors cette fois j'ai créé une région en Asie de l'Est. (Tout le reste convient tant qu'il prend en charge le plan de paiement à l'utilisation Linux. Géographiquement, Korea Central à Séoul était plus proche.) スクリーンショット 2020-05-04 20.08.52.png

Vous pouvez désormais choisir le paiement à l'utilisation Linux. Nous devons également préparer un compte de stockage à lier à partir de Functions, nous en avons donc créé un nouveau cette fois. スクリーンショット 2020-05-04 20.10.01.png

Application Insight pour la surveillance est également créé à ce moment. Vous pouvez maintenant voir le journal d'exécution.

スクリーンショット 2020-05-04 20.12.17.png

Cela créera quatre ressources.

  1. Application de fonctions (Fonctions)
  2. Application Insights
  3. Compte de stockage
  4. Plan de service d'application

On ne sait pas pourquoi la ressource appelée App Service Plan est créée même si le montant de la consommation (sans serveur) est sélectionné dans le plan tarifaire.

Développement local et déploiement aux fonctions

Dans le cas de .NET, vous pouvez créer une fonction sur l'écran d'Azure Portal, mais malheureusement, elle n'est pas prise en charge dans le cas de Python. Par conséquent, la procédure consiste à développer et tester localement, puis à déployer vers Functions.

スクリーンショット 2020-05-04 20.53.27.png スクリーンショット 2020-05-04 20.56.30.png

La procédure spécifique a été avancée en se référant à l'article suivant.

Créer un projet Azure Functions à l'aide de Visual Studio Code https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-csharp

L'environnement suivant est requis localement, alors installez-le. · Parce que. js -Python 3.8, Python 3.7 ou Python 3.6 ・ Code Visual Studio · Extension Python pour Visual Studio Code · Extension Azure Functions pour Visual Studio Code · Outils de base Azure Functions

Point de trébuchement

1. Erreur lors de l'exécution d'Azure Functions dans l'environnement local 1

Erreur d'autorisation lors de l'exécution de Functions Local.

Message d'erreur `Le fichier ne peut pas être lu car l'exécution du script est désactivée sur ce système. ''

J'ai dû changer la politique d'exécution de PowerShell. Lorsque ExecutionPlicy était défini sur RemoteSigned et exécuté uniquement pour la première fois, l'erreur disparaissait même si elle était rétablie sur Restreint après cela. image.png

About Execution Policies https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7

2. Erreur 2 lors de l'exécution d'Azure Functions dans l'environnement local

Erreur avec le code suivant sur \ _ \ _ init \ _ \ _. Py import azure.functions as func

Message d'erreur Unable to import 'azure.functions' pylint(import-error) [3, 1]

Il semble que le problème ait été causé par un mélange de plusieurs versions de Python localement, et il a été résolu en passant à un autre runtime. image.png

3. Ajouter MeCab aux fonctions

Il semble que si vous ajoutez une bibliothèque à requirements.txt de .vscode, elle s'installera du côté des fonctions. J'ai donc ajouté ce qui suit. ・ Mecab-python3

Le reste est comme d'habitude.

__init__.py


import MeCab
mecab = MeCab.Tagger("-Ochasen")
parsedsentence = mecab.parse(sentence)

Résumé

L'utilisation de MeCab dans Functions a été étonnamment rapide. Les fonctions sont suffisantes pour celui qui répond à cet objectif. (Cependant, je ne comprends pas pourquoi cela fonctionne, y compris où se trouve le corps principal du dictionnaire de mecab ...)

Le plan de paiement à l'utilisation a un délai maximal de 10 minutes, il est donc juste pour une exécution légère. Si vous voulez faire quelque chose d'un peu plus élaboré, il semble préférable d'utiliser un autre plan d'hébergement pour Functions ou même d'adopter DataBricks.

Échelle et hébergement Azure Functions https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-scale#service-limits

image.png

Confirmation de coût

Vous pouvez voir le coût en appelant Metric à partir du portail Azure. Le résultat de l'exécution de la fonction simple "Renvoie le résultat de l'analyse morphologique avec Mecab pour une phrase d'entrée" une fois est le suivant.

image.png

L'unité peut être une unité d'exécution de fonction. Comme l'unité de l'unité d'exécution de la fonction est [Mo millisecondes], convertissez-la en [Go secondes], qui est l'unité de facturation.

Cette fois 163,58 k = 163580 Mo millisecondes, donc 163,580 / 1,024,000 = 0.15974609375 【GB seconds】

Il est gratuit jusqu'à «1 million d'exécutions» et «400 000 Go de secondes» chaque mois, donc si vous effectuez des tests, il semble que cela rentrera dans le cadre libre. Bien sûr, veuillez noter que vous serez facturé pour BLOB etc. créé en même temps.

Recommended Posts

Utiliser Python et MeCab avec Azure Functions
Utiliser mecab avec Python 3
Utilisation de Python et MeCab avec Azure Databricks
Utiliser Python et word2vec (appris) avec Azure Databricks
Utilisez PIL ou Pillow avec Cygwin Python
Analyse des tweets avec Python, Mecab et CaboCha
[Python] Utiliser JSON avec Python
Utiliser DynamoDB avec Python
Utiliser python avec docker
Utilisez Python / Django avec Windows Azure Cloud Service!
[Azure Functions / Python] Fonctions de chaîne avec liaison de stockage de file d'attente
Curry n'importe quelle fonction avec Python ...
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Introduction aux fonctions Python
Utiliser l'API Trello avec python
[Python] Analyse morphologique avec MeCab
Python et matériel - Utilisation de RS232C avec Python -
Utiliser TUN / TAP avec Python
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Mémo d'entrée / sortie de stockage par Python dans Azure Functions
E-mail hipchat avec postfix, fluentd et python sur Azure
python avec pyenv et venv
Utiliser l'API subsonique avec python3
Fonctions de tri et de comparaison Python 3
Fonctions d'ordre supérieur et notation d'inclusion en Python
Fonctionne avec Python et R
API Nifty Cloud facile à utiliser avec botocore et python
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
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
Grattage avec Python et belle soupe
À propos de Python dict et des fonctions triées
Utilisez NAIF SPICE TOOL KIT avec Python
Lire et utiliser des fichiers Python à partir de Python
Encodage et décodage JSON avec python
Utiliser rospy avec virtualenv dans Python3
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Lire et écrire NetCDF avec Python
10 fonctions du "langage avec batterie" python
Utiliser Python mis en pyenv avec NeoVim
Utiliser la synthèse vocale Windows 10 avec Python
J'ai joué avec PyQt5 et Python3
Lire et écrire du CSV avec Python