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.
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.
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.
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.
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.
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ö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.
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.)
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.
Zu diesem Zeitpunkt wird auch Application Insight für die Überwachung erstellt. Jetzt können Sie das Ausführungsprotokoll sehen.
Dadurch werden vier Ressourcen erstellt.
Es ist unklar, warum die Ressource App Service Plan erstellt wird, obwohl im Preisplan die Verbrauchsmenge (ohne Server) ausgewählt ist.
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.
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
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.
About Execution Policies https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
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.
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)
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
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.
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