Делаем базу знаний на чем-то, типа продукционных правил. В части ЕСЛИ указываем ключевые слова, в части ТО - варианты ответов из которых происходит случайный выбор (1 ответ - частный случай - для вопросов, на которые ответ предопределен). Одно из правил делается специальным - оно используется тогда, когда никакое другое правило неприменимо. PROFIT.
Пример класса для правил:
Код:
type
TRule = class
KeyWords : TStringList;
Answers : TStringList;
constructor Create;
constructor Load(Stream : TStream);
destructor Destory; override;
procedure LoadFromStream(Stream : TStream);
procedure SaveToStream(Stream : TStream);
function GetMatchLevel(Questtion : String) : Double; overload;
function GetMatchLevel(Words : TStringList) : Double; overload;
end;
PS. Далее, видимо, в раздел "Работы" с соответ. обозначением цены и сроков. Ну или пиши код и начинай задавать конкретные вопросы здесь.
PPS. Голосом тоже, в принципе, можно. Только интернет нужен будет - у гугла распознавалку спрашивать.