Neulich habe ich ein Programm erstellt, das Konten anhand der Ergebnisse des maschinellen Lernens vorhersagt, aber es gab eine Meinung, dass die Reaktion der Vorhersageergebnisse ungewöhnlich langsam und unbrauchbar war, also habe ich ein wenig Einfallsreichtum versucht.
Ich habe mich für HTTP entschieden, um leicht zu erkennen, dass das Lernergebnis im Speicher gespeichert ist und das Konto beim Senden der Beschreibung zurückgegeben wird.
Also habe ich mit Python einen HTTP-Server erstellt, das Lernergebnis gelesen, als der HTTP-Server gestartet wurde, und als ich die Zusammenfassung mit GET gesendet habe, habe ich das Konto vorhergesagt und zurückgegeben.
Ich habe auf den folgenden Artikel verwiesen.
Erstellen Sie einfach einen HTTP-Server mit Python-Qiita
Ich verwende es so wie es ist, aber es wurde ein wenig korrigiert, weil die Bibliothek namens BaseHTTPServer geändert wurde und ein Fehler in der japanischen Verarbeitung aufgetreten ist. Übrigens ist es Python3.
CallbackServer.py
#!/usr/local/bin/python
# coding: utf-8
import requests
import http.server
import socketserver
from http.server import BaseHTTPRequestHandler
from urllib.parse import urlparse, unquote
def start(port, callback):
def handler(*args):
CallbackServer(callback, *args)
server = socketserver.TCPServer(('', int(port)), handler)
server.serve_forever()
class CallbackServer(BaseHTTPRequestHandler):
def __init__(self, callback, *args):
self.callback = callback
BaseHTTPRequestHandler.__init__(self, *args)
def do_GET(self):
parsed_path = urlparse(self.path)
query = unquote(parsed_path.query)
self.send_response(200)
self.end_headers()
result = self.callback(query)
self.wfile.write(result.encode('utf-8'))
return
Es liest das Lernergebnis beim Start und gibt das vom GET-Rückruf vorhergesagte Ergebnis zurück.
server.py
#!/usr/local/bin/python
# coding: utf-8
import sys
import CallbackServer
import pandas as pd
import numpy as np
homedir = "/home/scripts/"
filename = "data/code.csv"
df = pd.read_csv(homedir + filename, header=None)
df.index = df.pop(0)
df_rs = df.pop(1)
from sklearn.externals import joblib
scaler = joblib.load(homedir + 'data/scaler.pkl')
clf = joblib.load(homedir + 'data/clf.pkl')
vect = joblib.load(homedir + 'data/vect.pkl')
from janome.tokenizer import Tokenizer
t = Tokenizer()
def callback_method(query):
texts = [
query,
]
notes = []
for note in texts:
tokens = t.tokenize(note)
words = ""
for token in tokens:
words += " " + token.surface
notes.append(words)
X = vect.transform(notes)
result = clf.predict(X)
ans = ""
for i in range(len(texts)):
ans = df_rs.ix[result[i]]
return ans
if __name__ == '__main__':
port = sys.argv[1]
CallbackServer.start(port, callback_method)
Beginnen Sie mit dem folgenden Befehl.
python
$ chmod a+x server.py
$ ./server.py 8080 &
Lassen Sie uns das Vorhersageergebnis mit Ruby erhalten.
test.rb
require 'net/http'
require 'uri'
puts Net::HTTP.get_print('localhost', URI.escape('/?Autobahnnutzungsgebühr'), 8080)
Ich werde das machen.
python
$ ruby test.rb
Reisekosten Transport
Es wurde gemacht (^ - ^)
Gutes Gefühl (^ - ^)
Weitere Informationen zum Erstellen eines LINE-Bots finden Sie im folgenden Artikel.
Erstellen Sie einen automatischen Antwort-BOT mit der Messaging-API von LINE
Mit diesem LINE-Bot können Sie sich übrigens mit dem folgenden QR-Code anfreunden.
Was soll ich als nächstes tun?
Recommended Posts