Dieser Artikel ist der 24. Tag des Elastic Stack Adventskalenders 2016.
――Ich bin Ingenieur bei einer Firma namens Acroquest Technology. ――Wenn ich Student war, habe ich die Verarbeitung natürlicher Sprache und das Abrufen von Informationen durchgeführt.
――Es ist, als würde man Antworten auf Fragen ausspucken, die auf Japanisch geschrieben sind.
――Ich denke, Elasticsearch, das einfach zu skalieren ist, kann gut sein, wenn die Wissensquelle riesig wird. (Natürlich bin ich nicht motiviert, individuell einen großen Cluster zu bilden)
Erstens ist die Definition von "Frage und Antwort" flauschig. Der Schwierigkeitsgrad variiert also stark je nach Art der Frage Dieses Mal werde ich mich als ersten Schritt auf das "Authentizitätsbeurteilungsproblem" konzentrieren, das am einfachsten zu sein scheint.
Zum Beispiel als Antwort auf einen Satz wie "Ieyasu Tokugawa eröffnete das Edo Shogunate", der eine bestimmte Tatsache zum Ausdruck bringt. Es wird eine Echtheitsbeurteilung durchgeführt.
Wenn das so ist
In der Theorie.
Dieses Mal werden wir einige Beispieldaten erstellen und an Elasticsearch senden. Vorerst habe ich versucht, die Textdaten selbst und die separat geschriebenen einzufügen. (Ich würde mich freuen, wenn ich die Keywords visuell sehen könnte. Ich verlasse den Text, weil ich denke, dass ich die Syntax später analysieren möchte.
Als Datenfluss Datenquelle → Python → Elasticsearch → Python → Ausgabe Ich denke, es ist besser zu tun.
Es hängt nicht direkt damit zusammen, was Sie diesmal tun möchten, aber es macht Spaß, Graph zu verwenden, wenn Sie es in ein Array bringen
Grafik Ich fand es diesmal nicht sinnvoll, aber es war ziemlich wichtig ... Wenn Sie sich das ansehen, können Sie auf einen Blick sehen, dass "19" und "Jahrhundert" getrennt erscheinen und das mysteriöse Wort "ka" extrahiert wird. (Was ist "ka" ...) Als Prozess ist es nicht falsch, aber ich würde mich freuen, wenn "○○ Century" ein Set wäre. Es scheint, dass wir die Art und Weise, wie wir teilen, verbessern müssen. Ich werde das Wörterbuch separat überprüfen.
Stellen Sie vorerst sicher, dass Sie von der Python-Seite aus mit einem geeigneten Schlüsselwort suchen können.
ruby::
from elasticsearch import Elasticsearch
import json
es = Elasticsearch(['http://USER:PASSWORD@localhost:9200'])
request_body="{\"size\":10,\"query\":{\"term\":{\"words.keyword\":\"Japan\"}}}"
output = open("search_result.json","w")
json.dump(es.search(index="test",body=request_body),output, ensure_ascii=False, indent=4, sort_keys=True, separators=(',', ': '))
Wenn Sie so schreiben, werden Dokumente mit dem Wort "Japan" abgerufen. Das Ergebnis wird als ↓ zurückgegeben
Wenn es um Authentizität geht Danach kann es beurteilt werden, indem der Fragentext und der Text des zurückgegebenen Dokuments analysiert werden. Vorerst werde ich diesmal die bisherigen Vorbereitungen treffen. Bitte freuen Sie sich auf die Fortsetzung.
Vorerst habe ich mich darauf vorbereitet, ein Frage- und Antwortsystem zu erstellen. (Vielleicht sind es nur Vorbereitungen ...)
Im nächsten Artikel möchte ich ein Kind machen, das die Frage richtig beantworten kann.
Recommended Posts