Verwenden Sie Python und MeCab mit Azure-Funktionen

Zweck dieses Artikels

Ich möchte eine einfache Verarbeitung natürlicher Sprache (morphologische Analyse + α) mit MeCab in der Vorverarbeitung von Azure Data Factory durchführen. Es wäre praktisch, wenn Sie es als Funktion implementieren und später von verschiedenen Diensten wie LogicApps aufrufen könnten. Also habe ich zwei Implementierungsmethoden in Betracht gezogen.

  1. Azure-Funktionen (dieser Artikel)
  2. Azure DataBricks (Verwenden von Python und MeCab mit Azure Databricks)

Da es keine schwere Verarbeitung wie maschinelles Lernen ausführt, sind Azure-Funktionen ausreichend, daher habe ich es implementiert.

Wenn Sie zuerst die Schlussfolgerung schreiben ** ・ Funktionen, die durch die HTTP-Anforderung von Azure-Funktionen ausgelöst werden, können unter Bezugnahme auf die folgende URL implementiert werden **

Erstellen Sie ein Azure-Funktionsprojekt mit Visual Studio-Code https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-csharp

** ・ Mecab kann auch auf der Funktionsseite verwendet werden, indem "mecab-python3" zur Anforderung.txt von .vscode hinzugefügt wird **

** ・ Die monatliche kostenlose Stufe der Azure-Funktionen ist recht großzügig, sodass Sie sie eine Weile kostenlos testen können **

Der Rest ist ein Memorandum einiger Stolperpunkte.

Es gibt viele Punkte, an denen es an Verständnis mangelt. Bitte weisen Sie auf Fehler hin.

Übersicht über Azure-Funktionen

Eine ereignisgesteuerte Serverless-Computing-Plattform. Es wird durch den eingestellten Trigger aktiviert und verbraucht nur während der Ausführung der Funktion Rechenressourcen, sodass verschwenderische Kosten reduziert werden können.

Rechnungssystem

Es gibt drei Hosting-Pläne für Funktionen, aber der "Pay-as-you-go-Plan" ganz links ist der sogenannte normale Serverless. Diesmal habe ich das gewählt. スクリーンショット 2020-05-04 19.32.56.png

Azure-Funktionen - Preiseinstellung https://azure.microsoft.com/ja-jp/services/functions/#pricing

Die Abrechnung wird durch die Anzahl der Ausführungen, die Ausführungszeit und die Speichernutzung bestimmt. Es gibt einen freien Frame, der jeden Monat zurückgesetzt wird, und es scheint, dass er bis zu "1 Million Ausführungen" und "400.000 GB Sekunden" frei ist.

Laufzeitstapel (Sprache)

Sie können zwischen .Net Core, Node.js, Python, Java und Powershell Core wählen. Wenn Sie Python als Laufzeitstapel auswählen, unterstützt Ihr Betriebssystem nur Linux. Derzeit wird der Pay-as-you-go-Plan von Linux in beiden Regionen Japans nicht unterstützt. Daher muss eine andere Region ausgewählt werden. (Stand Mai 2020)

Unterstützte Regionen sind "Verfügbare Produkte nach Regionen -central, us-north-central, us-south-central, us-west-central, us-west, us-west-2, japan-west, japan-east) ".

auslösen

Auslöser für das Starten von Funktionen sind HTTP-Anforderung, Timer, BLOB, Eventhub usw. Dieses Mal scheint es einfach zu sein, deshalb habe ich es vorerst mit HTTP Request implementiert. Es scheint einfach zu sein, wenn eine BLOB-Datei erstellt wird.

Erstellen Sie Funktionen Apps aus Azure Portal

Ich wollte Python in einem Pay-as-you-go-Plan verwenden, also habe ich dieses Mal eine Region in Ostasien erstellt. (Alles andere ist in Ordnung, solange es den Pay-as-you-go-Plan Linux unterstützt. Geografisch gesehen war Korea Central in Seoul näher dran.) スクリーンショット 2020-05-04 20.08.52.png

Jetzt können Sie Linux Pay-as-you-go wählen. Wir müssen auch ein Speicherkonto für die Verknüpfung mit Funktionen vorbereiten, daher haben wir dieses Mal ein neues erstellt. スクリーンショット 2020-05-04 20.10.01.png

Zu diesem Zeitpunkt wird auch Application Insight für die Überwachung erstellt. Jetzt können Sie das Ausführungsprotokoll sehen.

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

Dadurch werden vier Ressourcen erstellt.

  1. Funktionen App (Funktionen)
  2. Application Insights
  3. Speicherkonto
  4. App Service Plan

Es ist unklar, warum die Ressource App Service Plan erstellt wird, obwohl im Preisplan die Verbrauchsmenge (ohne Server) ausgewählt ist.

Lokale Entwicklung und Bereitstellung für Funktionen

Im Fall von .NET können Sie eine Funktion auf dem Bildschirm von Azure Portal erstellen, die im Fall von Python jedoch leider nicht unterstützt wird. Daher besteht das Verfahren darin, lokal zu entwickeln und zu testen und dann für Funktionen bereitzustellen.

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

Das spezifische Verfahren wurde unter Bezugnahme auf den folgenden Artikel erweitert.

Erstellen Sie ein Azure-Funktionsprojekt mit Visual Studio-Code https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-csharp

Die folgende Umgebung ist lokal erforderlich, installieren Sie sie daher. · Weil. js -Python 3.8, Python 3.7 oder Python 3.6 ・ Visual Studio-Code · Python-Erweiterung für Visual Studio Code · Azure-Funktionserweiterung für Visual Studio-Code · Kerntools für Azure-Funktionen

Stolperpunkt

1. Fehler beim Ausführen von Azure-Funktionen in der lokalen Umgebung 1

Berechtigungsfehler beim Ausführen von Funktionen Lokal.

Fehlermeldung `Die Datei kann nicht gelesen werden, da die Skriptausführung auf diesem System deaktiviert ist. ``

Ich musste die Ausführungsrichtlinie von PowerShell ändern. Wenn ExecutionPlicy auf RemoteSigned gesetzt und nur zum ersten Mal ausgeführt wurde, verschwand der Fehler, auch wenn er danach wieder auf Restricted gesetzt wurde. image.png

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

2. Fehler 2 beim Ausführen von Azure-Funktionen in der lokalen Umgebung

Fehler mit dem folgenden Code auf \ _ \ _ init \ _ \ _. Py import azure.functions as func

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

Es scheint, dass das Problem durch eine Mischung mehrerer Python-Versionen lokal verursacht wurde und durch den Wechsel zu einer anderen Laufzeit behoben wurde. image.png

3. Fügen Sie MeCab zu Funktionen hinzu

Es scheint, dass, wenn Sie der Datei request.txt von .vscode eine Bibliothek hinzufügen, diese auf der Funktionsseite installiert wird. Also habe ich folgendes hinzugefügt. ・ Mecab-Python3

Der Rest ist wie gewohnt.

__init__.py


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

Zusammenfassung

Die Verwendung von MeCab in Funktionen war überraschend schnell. Funktionen sind ausreichend für diejenigen, die diesen Zweck erfüllen. (Ich verstehe jedoch nicht, warum es funktioniert, auch nicht, wo sich der Hauptteil des Mecab-Wörterbuchs befindet ...)

Der Pay-as-you-go-Plan hat eine maximale Zeitüberschreitung von 10 Minuten und ist daher nur für die einfache Ausführung vorgesehen. Wenn Sie etwas aufwändigeres tun möchten, ist es besser, einen anderen Hosting-Plan für Funktionen zu verwenden oder sogar DataBricks zu verwenden.

Skalieren und Hosting von Azure-Funktionen https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-scale#service-limits

image.png

Kostenbestätigung

Sie können die Kosten anzeigen, indem Sie Metric über das Azure-Portal aufrufen. Das Ergebnis der einmaligen Ausführung der einfachen Funktion "Das Ergebnis der morphologischen Analyse mit Mecab für einen Eingabesatz zurückgeben" ist wie folgt.

image.png

Die Einheit kann eine Funktionsausführungseinheit sein. Da die Einheit der Funktionsausführungseinheit [MB Millisekunden] ist, konvertieren Sie diese in [GB Sekunden], die die Abrechnungseinheit ist.

Diesmal sind 163,58 k = 163.580 MB Millisekunden 163,580 / 1,024,000 = 0.15974609375 【GB seconds】

Es ist bis zu "1 Million Ausführungen" und "400.000 GB Sekunden" pro Monat kostenlos. Wenn Sie also einige Tests durchführen, scheint es, dass es überhaupt in den freien Frame passt. Bitte beachten Sie, dass Ihnen BLOB usw. in Rechnung gestellt werden, die gleichzeitig erstellt wurden.

Recommended Posts

Verwenden Sie Python und MeCab mit Azure-Funktionen
Verwenden Sie Mecab mit Python 3
Verwenden von Python und MeCab mit Azure Databricks
Verwenden Sie Python und word2vec (gelernt) mit Azure Databricks
Verwenden Sie PIL oder Pillow mit Cygwin Python
Tweet-Analyse mit Python, Mecab und CaboCha
[Python] Verwenden Sie JSON mit Python
Verwenden Sie DynamoDB mit Python
Verwenden Sie Python mit Docker
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
[Azure-Funktionen / Python] Kettenfunktionen mit Warteschlangenspeicherbindung
Curry jede Funktion mit Python ....
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Einführung in Python-Funktionen
Verwenden Sie die Trello-API mit Python
[Python] Morphologische Analyse mit MeCab
Python und Hardware-Verwenden von RS232C mit Python-
Verwenden Sie TUN / TAP mit Python
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Speichereingabe- / Ausgabememo von Python in Azure-Funktionen
E-Mail Hipchat mit Postfix, Fluentd und Python auf Azure
Python mit Pyenv und Venv
Verwenden Sie die Unterschall-API mit Python3
Python 3 Sortier- und Vergleichsfunktionen
Funktionen höherer Ordnung und Einschlussnotation in Python
Funktioniert mit Python und R.
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Python: So verwenden Sie Async mit
Verwenden der SQL-Datenbank von Azure mit SQL Alchemy
Roboter läuft mit Arduino und Python
Verwenden Sie eine Point Grey-Kamera mit Python (PyCapture2).
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
[Python / matplotlib] FuncAnimation verstehen und verwenden
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
Über Python-Diktat und sortierte Funktionen
Verwenden Sie NAIF SPICE TOOL KIT mit Python
Lesen und verwenden Sie Python-Dateien aus Python
JSON-Codierung und -Decodierung mit Python
Verwenden Sie rospy mit virtualenv in Python3
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von NetCDF mit Python
10 Funktionen von "Sprache mit Batterie" Python
Verwenden Sie Python in pyenv mit NeoVim
Verwenden Sie die Windows 10-Sprachsynthese mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python