То, что вы ищете, называется NLTK , что означает набор инструментов для естественного языка (обработки).
Чтобы дать вам представление о том, на что способна эта библиотека, вот демонстрационный код с домашней страницы NLTK, показывающий, как маркировать и тегировать текст:
import nltk
sentence = "At eight o'clock on Thursday morning Arthur didn't feel very good."
tokens = nltk.word_tokenize(sentence)
print(tokens)
tagged = nltk.pos_tag(tokens)
print(tagged[0:6])
Ожидаемый результат:
['At', 'eight', "o'clock", 'on', 'Thursday', 'morning', 'Arthur', 'did', "n't", 'feel', 'very', 'good', '.']
[('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'), ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN')]
Теперь, учитывая, насколько просты ваши требования, вам может даже не понадобиться такая сложная библиотека, как NLTK, для решения ваших проблем, вы можете использовать простой предопределенный поиск строки.
Например, если вам нужно ответить только на несколько вопросов, таких как:
«Кому принадлежит [x] тип автомобиля?»
«Сколько людей владеет [x] типом автомобиля?»
«Какой тип машины [x] принадлежит?»
Вы можете использовать Regex для поиска совпадений по заранее заданным вопросам:
import re
# get the question
question = "What kind of car does Joe own?"
# use regex to find matches for predefined question formats
car_type_for_match = re.findall(r"What type of car does (.*?) own\?", question)
if car_type_for_match and len(car_type_for_match) > 0:
print("Car type for: {}".format(car_type_for_match))
Который вы можете позже расширить с помощью if
операторов, чтобы добавить больше вопросов.
Удачи.