Программа «8 Ball» - PullRequest
       11

Программа «8 Ball»

0 голосов
/ 18 июля 2011

Я пытался посмотреть на Google, но я думаю, я просто не могу найти правильные поисковые фразы, чтобы найти то, что я хочу. Если вы знакомы с IRC-сервером afterNET, есть команда «.8», которая представляет собой 8 баллов. Он отвечает больше, чем просто да / нет вопросов. Он дает вам различные ответы, основанные на определенных словах, которые вы используете в своем вопросе, например, когда, где, цвет и т. Д.

Я бы хотел сделать что-то подобное, но понятия не имею, с чего начать. Я недавно изучал DFA (детерминированные конечные автоматы), это то, где я должен начать? Я понимаю, что не хочу составлять сценарии для каждой возможной комбинации слов, которые люди используют, но было бы неплохо иметь систему, которая выглядит довольно реалистично (например, программа 8ball на сервере IRC), и которую можно расширять для большего количества слов 'всякий раз, когда я хочу.

Спасибо за любую помощь / ссылки!

1 Ответ

1 голос
/ 18 июля 2011

Вы можете дать большинству реализаций 8ball больше доверия, чем они того заслуживают. Я думаю, что дело в том, что вопросы предназначены для ответов да / нет, поэтому предоставленные ответы должны охватывать только довольно предсказуемый набор возможностей.

Большинство известных мне сценариев 8ball ( пример ) просто используют массив и случайное число для получения ответа.

Магические боты 8ball очень популярны в irc, поскольку их очень легко реализовать - просто отвечайте на текст с помощью заданного маркера (в данном случае «.8») и отвечайте случайным ответом.

Я никогда не слышал о волшебном мяче 8, использующем детерминированный подход, стиль Cleverbot . На самом деле, пытаясь это сделать, я даже не уверен, насколько это детерминировано, поскольку большинство ответов также совершенно случайны и не связаны с тем, что я говорил.

// our answers array
String[] answers = [ "yes", "no", "for sure", "unlikely", "most certainly", "definitely not" ];

public String ask8Ball() {
    // rand returns a float between 0>=res>1, the (int) cast rounds down
    int index = (int)(java.lang.Math.random() * 7);
    return answers[index];
}
...