Dies ist die zweite Ausgabe von Ich möchte einen maschinellen Lerndienst ohne Programmierung erstellen! Textklassifizierung. Stellt Klassifizierungsergebnisse für maschinelles Lernen über die Web-API zur Verfügung.
Zu diesem Zeitpunkt war es nicht wirklich nicht programmiert und es begann sich um einen Titelbetrug zu handeln, aber es sind nur 60 Codezeilen, daher denke ich nicht, dass es schwer zu lesen ist.
Die Quelle ist unter https://github.com/shuukei-imas-cg/imas_cg_words verfügbar.
Falcon Falcon ist ein sehr schnelles und minimalistisches Webframework für Backend-Anwendungen. Laut dem auf der offiziellen Website veröffentlichten Benchmark ist er als Webframework für Python neunmal leistungsfähiger als der Standardflask (0.11.1). Diesmal ist es eine große Sache, also mache ich Cythonize und richte es so ein, dass es schneller läuft.
Gunicorn Gunicorn ist ein einfacher und schneller WSGI-Webserver, der von Falcon empfohlen wird. WSGI steht für Web Server Gateway Interface und ist eine standardisierte Schnittstellendefinition für Webserver und Web Frameworks. Wenn Sie dies befolgen, können Sie es mit Ihrer bevorzugten Kombination aus Webserver und Webanwendung (Framework) verwenden.
cd imas_cg_words / (Verzeichnis im vorherigen Artikel geklont)
git pull
# Installieren Sie Gunicorn, Cython
pip install cython gunicorn
# Installieren Sie beim Kompilieren von Falcon mit dem C-Compiler
pip install --no-binary :all: falcon
# Starten Sie den Webapi-Server auf localhost
cd webapi/
python server.py &
# Abfrage
Curl http: // localhost: 8080 / imas_cg-words / v1 / Predict / Delusion
[
{
"score": 1.2635555267333984,
"name:": "Hinako Kita"
},
{
"score": -0.9001807570457458,
"name:": "Aiumi Munakata"
},
{
"score": -1.0048713684082031,
"name:": "Nanami Asari"
}
]
Wenn Sie eine Abfrage mit Curl auslösen und diese wie oben angezeigt wird, funktioniert sie ordnungsgemäß. Empfängt beliebigen Text mit der HTTP-GET-Methode und gibt das Klassifizierungsergebnis im JSON-Format zurück.
Wenn Sie als Web-API veröffentlichen, auf die von außen zugegriffen werden kann, reicht simple_server nicht aus. Verwenden Sie Gunicorn daher wie folgt. Beachten Sie, dass beim Booten von Gunicorn die in config.py festgelegte IP-Adresse und Portnummer ignoriert werden und die in den Befehlszeilenoptionen angegebenen Werte Vorrang haben.
gunicorn -b (IP-Adresse) :( Portnummer) Server: API &
# Bei Angabe der Anzahl der Worker und der Protokolldatei
gunicorn -w 4 -b (IP-Adresse) :( Portnummer) --access-logfile log / access.log --error-logfile log / error.log server: api &
Geben Sie für die IP-Adresse eine IP-Adresse an, auf die von außen verwiesen werden kann.
Ich werde den Inhalt von webapi / server.py erklären.
Erstellen Sie zunächst eine Instanz von Falcon und konfigurieren Sie das Routing so, dass die Klasse PredictSerif dem Pfad des URI zugewiesen wird. Der Teil {words} kann einen beliebigen Wert annehmen und sein Inhalt wird als Variable an die Klasse oder Funktion übergeben.
# Add route
api = falcon.API()
api.add_route('/imas_cg-words/v1/predict/{words}', PredictSerif())
Predict Serif definiert das Verhalten der HTTP-GET-Methode. Der Inhalt der Funktionsvorhersage entspricht fast dem [zuvor] erstellten (http://qiita.com/shuukei-imas-cg/items/ea501e62970b309ceea4). Der Rückgabewert wird in das JSON-Format konvertiert und als Ausgabe von WebAPI angezeigt.
_add_headers fügt einige HTTP-Header hinzu. Im nächsten Artikel werden wir CORS vorerst zulassen, um über JavaScript von SPA aus auf diese Web-API zuzugreifen.
class PredictSerif(object):
def on_get(self, req, resp, words):
result = predict(words)
json_out = json.dumps(result, indent=4, ensure_ascii=False)
_add_headers(resp)
resp.body = json_out
resp.status = falcon.HTTP_200
logging.info("predict {0} {1}".format(req.remote_addr, words.decode('utf-8')))
Einrückung = 4 in json.dumps ist zur besseren Lesbarkeit festgelegt. Sie können es in der Produktion löschen.
Sie können jetzt die Klassifizierungsfunktion für maschinelles Lernen als Web-API verwenden. Nächstes Mal werde ich ein Frontend erstellen, das diese Web-API mit Vue.js verwendet.
Wenn Ihnen dieser Artikel gefällt, wird er um den April 2018 bei Idol Master Cinderella Girls stattfinden, so viel Sie für gut halten. Bitte stimmen Sie für Hinako Kita bei der "7. Cinderella Girl General Election", die stattfinden wird.