Cet article est le 24e jour du calendrier de l'avent Elastic stack 2016.
――Je suis ingénieur dans une société appelée Acroquest Technology. «Quand j'étais étudiant, je faisais du traitement du langage naturel et de la recherche d'informations.
«C'est comme cracher des réponses à des questions écrites en japonais.
«Je pense qu'Elasticsearch, qui est facile à mettre à l'échelle, peut être utile lorsque la source de connaissances devient énorme. (Bien sûr, je ne suis pas motivé pour former un grand cluster individuellement)
Tout d'abord, la définition de «question et réponse» est floue. La gamme de difficulté varie considérablement en fonction du type de question, donc Cette fois, dans un premier temps, je me concentrerai sur le "problème du jugement d'authenticité" qui semble être le plus simple.
Par exemple, en réponse à une phrase telle que "Ieyasu Tokugawa a ouvert le shogunat Edo" qui exprime un fait spécifique. Le jugement d'authenticité est effectué.
Si ce
En théorie.
Cette fois, nous allons créer des exemples de données et les soumettre à Elasticsearch. Pour le moment, j'ai essayé d'insérer les données textuelles elles-mêmes et celles qui ont été écrites séparément. (Je serais heureux si je pouvais voir les mots-clés visuellement, Je laisse le texte car je pense que je vais vouloir analyser la syntaxe plus tard)
En tant que flux de données Source de données → Python → elasticsearch → Python → sortie Je pense qu'il vaut mieux faire.
Ce n'est pas directement lié à ce que vous voulez faire cette fois, mais c'est amusant d'utiliser Graph si vous le mettez dans un tableau
Graphique J'ai trouvé que ça n'avait pas de sens cette fois, mais c'était plutôt important ... Si vous regardez cela, vous pouvez voir d'un coup d'œil que «19» et «siècle» apparaissent séparément et le mot mystérieux «ka» est extrait. (Qu'est-ce que "ka" ...) Ce n'est pas faux en tant que processus, mais je serais heureux si "○○ Century" était un ensemble. Il semble que nous devons améliorer la façon dont nous partageons. Je vais revoir le dictionnaire séparément.
Pour le moment, assurez-vous que vous pouvez rechercher du côté python avec un mot clé approprié.
ruby::
from elasticsearch import Elasticsearch
import json
es = Elasticsearch(['http://USER:PASSWORD@localhost:9200'])
request_body="{\"size\":10,\"query\":{\"term\":{\"words.keyword\":\"Japon\"}}}"
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=(',', ': '))
Si vous écrivez ainsi, les documents contenant le mot «Japon» seront extraits. Le résultat sera renvoyé comme ↓
Quand il s'agit d'authenticité Après cela, il semble que cela puisse être jugé en analysant le texte de la question et le texte du document retourné. Pour le moment, je vais faire la préparation jusqu'ici cette fois. Veuillez attendre avec impatience la suite.
Pour le moment, je me suis préparé à créer un système de questions et réponses. (Peut-être que ce ne sont que des préparatifs ...)
Dans le prochain article, je veux faire un enfant qui puisse répondre correctement à la question.
Recommended Posts