def rule(verb, main_obj, obj): """ question : VERB object object """ # ! shift/reduce if verb.base != 'be': raise AISyntaxError('Expected *be* in the question.') action = Action(verb.word, **verb.form) action.objects[''] = obj ret = Thought(main_obj, action) ret.set_question(True) return ret
def statement2thought(self, statement): """ Переводит утверждение в мысль. Получает на вход строку с удаленными начальными и конечными пробельными символами. Возвращает мысль (класс Thought). """ # Утверждение имеет структуру: # подлежащее сказуемое. # задача функции распознать эти части # и перевести слова в концепты (Concept) # План действий такой: # 1) Разбить предложение на список слов. # 2) Извлечь из начала подлежащее. # 3) Из начала того, что осталось, извлечь сказуемое. res = Thought() words = textprocess.text2words(statement) subject = self.extract_subject(words) action = self.extract_action(words) res.set_subject(subject) res.set_action(action) return res