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.
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.
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.
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.
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».
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®ions=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) ".
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.
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.)
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.
Application Insight pour la surveillance est également créé à ce moment. Vous pouvez maintenant voir le journal d'exécution.
Cela créera quatre ressources.
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.
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.
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
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.
About Execution Policies https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
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.
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)
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
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.
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