我试着在谷歌上搜索过,但我想我就是找不到正确的搜索短语来找到我想要的东西。如果你熟悉 afterNET IRC 服务器,那里有一个命令 ‘.8’,它是一个 8 号球。它提供的答案不仅仅是是/否的问题。它会根据你在问题中使用的特定词语,比如何时、何地、颜色等,给出各种各样的答案。
我想制作类似的东西,但不知道从哪里开始。我最近学习了 DFA(确定性有限自动机),我应该从那里开始吗?我知道我不想编写人们使用的每一种可能的词语组合,但如果有一个感觉有点真实(就像 IRC 服务器上的 8 号球程序)并且可以随时扩展更多“词语”的系统,那就太好了。
感谢任何帮助/链接!
回答:
你可能对大多数 8 号球的实现给予了过高的评价。我认为关键在于问题是针对是/否答案的,因此提供的答案只需要涵盖相当可预测的可能性集合即可。
据我所知,大多数 8 号球脚本(例子)只会使用一个数组和一个随机数来获取答案。
魔法 8 号球机器人在 IRC 上非常受欢迎,因为它们非常容易实现 – 只需用给定的标记(在本例中为“.8”)回复文本,并用一个随机答案回复即可。
我从未听说过魔法 8 号球使用确定性方法,类似于 Cleverbot。实际上,尝试之后,我甚至不确定它的确定性有多强,因为大多数响应也是完全随机的,并且与我说的话无关。
// 我们的答案数组String[] answers = [ "yes", "no", "for sure", "unlikely", "most certainly", "definitely not" ];public String ask8Ball() { // rand 返回一个介于 0>=res>1 之间的浮点数,(int) 强制转换为向下取整 int index = (int)(java.lang.Math.random() * 7); return answers[index];}