Анализ фразы, введенной человеком
1.Фраза пользователя никак не анализируется. В ответ выводится случайная фраза. Этот способ может показаться примитивным, но при умелом подборе фраз и большом их количестве использование именно такого способа становится очевидным пользователю далеко не сразу.
2.Во фразе пользователя ищутся ключевые слова; каждое слово-стимул вызывает соответствующую реакцию. Предыдущие фразы никак не учитываются.
Здесь есть несколько вариантов.
Различия в поиске слов во фразе:
ищутся целые слова в начальной форме;
ищутся целые слова в различных грамматических формах (при этом реакция на разные формы одного и того же слова может быть принципиально различной);
ищутся части слов, например, корни (в этом случае разные формы одного слова вызывают одинаковую реакцию);
ищутся синонимы слов (в начальной форме или в различных формах; синонимы могут задаваться разработчиком или определяться программой самостоятельно, в процессе обучения)
учитываются не только слова, но и знаки препинания, пробелы, а также место слова во фразе: фраза начинается этим словом, заканчивается им, или слово стоит где-то в середине;
во фразе ищется не одно слово или сочетание символов, а два, три и т.д. (они должны одновременно присутствовать во фразе, но могут стоять в произвольном порядке);
поиск идет "по маске", то есть во фразе ищутся несколько сочетаний символов, стоящих в определенном порядке и разделенных другими последовательностями символов.
Особо нужно отметить различия, связанные с распознаванием вопросительных предложений, отрицания, а также фраз, состоящих из нескольких предложений. В идеале каждое предложение должно рассматриваться отдельно (возможно, с учетом его порядка во введенной фразе: например, последнее введенное предложение рассматривается в первую очередь); реакция на вопросительные предложения должна быть другой, чем на соответствующие повествовательные (т.е. отличающиеся только знаком препинания в конце предложения); частицы "не" и "ни" должны при анализе фразы относиться к тем словам, перед которыми они стоят (даже в случае раздельного написания). Большинство программ, учитывая наличие "не" и "ни" в тексте, не различают, к какому слову относятся эти частицы.
Различие в выводе ответной фразы:
на каждое слово-стимул выводится всегда одна и та же фраза-реакция;
в ответ на слово-стимул выводится случайная фраза-реакция всегда из одного и того же набора;
фраза-реакция в ответ на слово-стимул не просто выбирается случайным образом из определенного набора, но и каким-либо образом зависит от внешних условий (например, от времени суток, от случайным образом установленного в начале работы программы значения некоторой величины-"настроения", от "характера" программы и т.д.);
иногда в ответ на слово-стимул не просто выводится фраза-реакция, но и выполняется некая процедура (например, в моем Talkerе это были блок психологической поддержки, проведение теста, сочинение пословиц и т.п.).
Отдельно надо отметить, что ответные реплики могут подбираться с различной степенью строгости: программа может выдавать имеющуюся в базе реплику в случае точного совпадения ключевых слов во введенной человеком строке с ключевыми словами записи в базе, или в случае совпадения части ключевых слов (выбирается запись с максимальной степенью совпадения), или даже в случае, если во фразе вообще не найдены известные программе ключевые слова (некоторые программы в этом случае выдают требование научить их, как надо отвечать на такую фразу; некоторые отделываются "общими фразами", подходящими в качестве ответа на любую реплику, а некоторые выбирают из базы первую попавшуюся реплику, иногда исключая при этом явно неподходящие, но в целом не слишком заботясь об осмысленности ответа).
3.В разговоре учитывается не только последняя фраза человека, но и предыдущие фразы (в простейшем случае - две-три фразы, в более сложном - весь предшествующий разговор, то есть в ходе диалога происходит движение по некоторому графу, ответная реплика выбирается в зависимости от того, на какой вершине графа мы находимся, а вершина, к которой нужно перейти после произнесения реплики, выбирается в зависимости от фразы, сказанной человеком). Это может быть отслеживание контекста разговора и/или просто учет темы предыдущих реплик.
4.Фраза, выводимая программой, не выбирается из числа готовых фраз, а формируется с помощью заполнения некоторого шаблона (или одного из имеющихся шаблонов) словами из базы в зависимости от контекста разговора.
2.Во фразе пользователя ищутся ключевые слова; каждое слово-стимул вызывает соответствующую реакцию. Предыдущие фразы никак не учитываются.
Здесь есть несколько вариантов.
Различия в поиске слов во фразе:
ищутся целые слова в начальной форме;
ищутся целые слова в различных грамматических формах (при этом реакция на разные формы одного и того же слова может быть принципиально различной);
ищутся части слов, например, корни (в этом случае разные формы одного слова вызывают одинаковую реакцию);
ищутся синонимы слов (в начальной форме или в различных формах; синонимы могут задаваться разработчиком или определяться программой самостоятельно, в процессе обучения)
учитываются не только слова, но и знаки препинания, пробелы, а также место слова во фразе: фраза начинается этим словом, заканчивается им, или слово стоит где-то в середине;
во фразе ищется не одно слово или сочетание символов, а два, три и т.д. (они должны одновременно присутствовать во фразе, но могут стоять в произвольном порядке);
поиск идет "по маске", то есть во фразе ищутся несколько сочетаний символов, стоящих в определенном порядке и разделенных другими последовательностями символов.
Особо нужно отметить различия, связанные с распознаванием вопросительных предложений, отрицания, а также фраз, состоящих из нескольких предложений. В идеале каждое предложение должно рассматриваться отдельно (возможно, с учетом его порядка во введенной фразе: например, последнее введенное предложение рассматривается в первую очередь); реакция на вопросительные предложения должна быть другой, чем на соответствующие повествовательные (т.е. отличающиеся только знаком препинания в конце предложения); частицы "не" и "ни" должны при анализе фразы относиться к тем словам, перед которыми они стоят (даже в случае раздельного написания). Большинство программ, учитывая наличие "не" и "ни" в тексте, не различают, к какому слову относятся эти частицы.
Различие в выводе ответной фразы:
на каждое слово-стимул выводится всегда одна и та же фраза-реакция;
в ответ на слово-стимул выводится случайная фраза-реакция всегда из одного и того же набора;
фраза-реакция в ответ на слово-стимул не просто выбирается случайным образом из определенного набора, но и каким-либо образом зависит от внешних условий (например, от времени суток, от случайным образом установленного в начале работы программы значения некоторой величины-"настроения", от "характера" программы и т.д.);
иногда в ответ на слово-стимул не просто выводится фраза-реакция, но и выполняется некая процедура (например, в моем Talkerе это были блок психологической поддержки, проведение теста, сочинение пословиц и т.п.).
Отдельно надо отметить, что ответные реплики могут подбираться с различной степенью строгости: программа может выдавать имеющуюся в базе реплику в случае точного совпадения ключевых слов во введенной человеком строке с ключевыми словами записи в базе, или в случае совпадения части ключевых слов (выбирается запись с максимальной степенью совпадения), или даже в случае, если во фразе вообще не найдены известные программе ключевые слова (некоторые программы в этом случае выдают требование научить их, как надо отвечать на такую фразу; некоторые отделываются "общими фразами", подходящими в качестве ответа на любую реплику, а некоторые выбирают из базы первую попавшуюся реплику, иногда исключая при этом явно неподходящие, но в целом не слишком заботясь об осмысленности ответа).
3.В разговоре учитывается не только последняя фраза человека, но и предыдущие фразы (в простейшем случае - две-три фразы, в более сложном - весь предшествующий разговор, то есть в ходе диалога происходит движение по некоторому графу, ответная реплика выбирается в зависимости от того, на какой вершине графа мы находимся, а вершина, к которой нужно перейти после произнесения реплики, выбирается в зависимости от фразы, сказанной человеком). Это может быть отслеживание контекста разговора и/или просто учет темы предыдущих реплик.
4.Фраза, выводимая программой, не выбирается из числа готовых фраз, а формируется с помощью заполнения некоторого шаблона (или одного из имеющихся шаблонов) словами из базы в зависимости от контекста разговора.
Обучение
1.Не присутствует ни в каких формах. Впрочем, это не значит, что такую программу ничему нельзя научить: в большинстве случаев базы данных таких программ весьма успешно правятся вручную.
2.Есть специальный режим обучения - отдельно от разговора. Во время обычного разговора программа не обучается (тем не менее, режим обучения часто присутствует и в программах, которые могут обучаться непосредственно во время разговора!).
3.Каждая фраза пользователя в ходе диалога заносится в базу без анализа (такие программы в ходе обучения очень часто "глупеют", начинают выдавать реплики, не связанные с предыдущей репликой пользователя).
4.Каждая фраза пользователя заносится в базу после предварительного анализирования (в этом случае, если алгоритм анализа фразы хороший, программа умнеет на глазах, но размер базы катастрофически быстро растет, и очень скоро программа начинает "тормозить").
5.После предварительного анализа в базу заносятся не все, а лишь некоторые фразы (например, относящиеся к значимым темам или являющиеся ответом на наиболее часто встречающиеся реплики). В этом случае, даже если алгоритм анализа фразы примитивен, программа умнеет достаточно быстро, а в базу не попадают бессмысленные реплики; но необходимо выработать удачные критерии отбора фраз.
2.Есть специальный режим обучения - отдельно от разговора. Во время обычного разговора программа не обучается (тем не менее, режим обучения часто присутствует и в программах, которые могут обучаться непосредственно во время разговора!).
3.Каждая фраза пользователя в ходе диалога заносится в базу без анализа (такие программы в ходе обучения очень часто "глупеют", начинают выдавать реплики, не связанные с предыдущей репликой пользователя).
4.Каждая фраза пользователя заносится в базу после предварительного анализирования (в этом случае, если алгоритм анализа фразы хороший, программа умнеет на глазах, но размер базы катастрофически быстро растет, и очень скоро программа начинает "тормозить").
5.После предварительного анализа в базу заносятся не все, а лишь некоторые фразы (например, относящиеся к значимым темам или являющиеся ответом на наиболее часто встречающиеся реплики). В этом случае, даже если алгоритм анализа фразы примитивен, программа умнеет достаточно быстро, а в базу не попадают бессмысленные реплики; но необходимо выработать удачные критерии отбора фраз.
--- Добавлено в 2017-08-09 12:59:24
RAWY_EX писал(а):
у "мальчиков" есть время до 2019 годаВ 2019 году компания IBM планирует создать полную симуляцию головного мозга человека.
Мы быстрей справимся! Скорее всего не смогут они успеть к 2019 году!(В 2019 году компания IBM планирует создать полную симуляцию головного мозга человека.)