найти ответ на «какой из этих» вопросов - PullRequest
0 голосов
/ 11 мая 2019

Я пишу программу на Python для бота-респондента (только для образовательных целей), используя Tesseract OCR и google-search-Api.Программа кажется очень точной при работе с прямым вопросом («кто что сделал», «что это такое»), но имеет некоторые проблемы с вопросами, которые включают ответы как часть себя («какой из них»).


import pytesseract
from PIL import Image
from googleapiclient.discovery import build
import json
import unicodedata
import time
import os

#removing non-ASCII characters from OCR
def strip_accents(text):


    text = unicodedata.normalize('NFD', text)\
           .encode('ascii', 'ignore')\
           .decode("utf-8")

    return str(text)

#googling the question using Google-search-Api
def google_search(search_term, api_key, cse_id, **kwargs):
    service = build("customsearch", "v1", developerKey=api_key)
    res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
    return res

#using Tesseract OCR
question = strip_accents(pytesseract.image_to_string(Image.open('/Users/lorenzo/Desktop/live_quiz/question.png'), lang = 'eng'))
answer1 = strip_accents(pytesseract.image_to_string(Image.open('/Users/lorenzo/Desktop/live_quiz/answer1.png'), lang = 'eng'))
answer2 = strip_accents(pytesseract.image_to_string(Image.open('/Users/lorenzo/Desktop/live_quiz/answer2.png'), lang = 'eng'))
answer3 = strip_accents(pytesseract.image_to_string(Image.open('/Users/lorenzo/Desktop/live_quiz/answer.png'), lang = 'eng'))


#creating three new questions by taking the original question and each of the answers
edited_question_1 = question + '? ' + '"' + answer1 + '"'
edited_question_2 = question + '? ' + '"' + answer2 + '"'
edited_question_3 = question + '? ' + '"' + answer3 + '"'


#searching each new question separately
result1 = google_search(edited_question_1, my_api_key, my_cse_id, num = 1)
result2 = google_search(edited_question_2, my_api_key, my_cse_id, num = 1)
result3 = google_search(edited_question_3, my_api_key, my_cse_id, num = 1)


#counting the search results for each google search
num_results_1=int(result1['searchInformation']['totalResults']) 
num_results_2=int(result2['searchInformation']['totalResults'])
num_results_3=int(result3['searchInformation']['totalResults'])

На данный момент этот подход поиска трех новых вопросов, каждый из которых создан из исходного плюс один из результатов, является очень неточным, поскольку число результатов может быть обусловлено многими другими факторами, которые неt затрагивает реальный вопрос (например, популярность одного из ответов).
Мне было интересно, знал ли кто-нибудь из вас о лучшем подходе к этой проблеме для повышения точности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...