佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1160|回复: 12

想用JAVA做一个简单的ChatBot,请各位大大帮忙

[复制链接]
发表于 20-5-2014 04:10 PM | 显示全部楼层 |阅读模式
老师给一个AI的assignment,说用甚么programming language都可以,我就用java写了一点,可是到后面没idea了,我要怎样去determin user的input来给回复呢?怎样去compare那个input或者找input的keyword?我在youtube看了一个教学,他是大概这样做的
  1. myVocab.show(false);
  2.                 myVocab.addKey("hello");
  3.                 myVocab.addPhrase("hello", "Hello, my name is chatbot");
  4.                 myVocab.addPhrase("hello", "i am chat bot");
  5.                 myVocab.addKey("goodbye");
  6.                 myVocab.addPhrase("goodbye", "it was nice talking to u");
  7.                 myVocab.addPhrase("goodbye", "See you in some other time");
  8.                 myVocab.addKey("how are you");
  9.                 myVocab.addPhrase("how are you", "I'm fine and you?");
  10.                 myVocab.addPhrase("how are you", "I'm doing great");
  11.                 myVocab.addKey("i am good");
  12.                 myVocab.addPhrase("i am good", "that's is good to hear");
  13.                 myBrain = new Brain(myVocab);
复制代码
上面的只是一小段,可是我找不到addKey和addPhrase的example

我自己写的如下,请各位大大给些意见,万分感激
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4. import java.util.ArrayList;
  5. import java.util.List;

  6. public class Chatbot extends JFrame implements ActionListener{
  7.         
  8.         private JTextField insert;
  9.         private JTextArea area;
  10.         private JButton send;
  11.         private JPanel b1,b2,b3;
  12.         private JScrollPane scl;
  13.         private JLabel space;
  14.         private Brain myBrain;
  15.         private Vocabulary myVocab;

  16.         public Chatbot()
  17.         {
  18.                 Container pane=getContentPane();
  19.                 pane.setBackground(Color.white);
  20.                 pane.setLayout(new BorderLayout());
  21.                 b1 = new JPanel();
  22.                 area = new JTextArea(20,30);
  23.                 area.setEditable(false);
  24.                 area.setLineWrap(true);
  25.                 scl = new JScrollPane(area);
  26.                 scl.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  27.                 b2 = new JPanel();
  28.                 space = new JLabel("Press button 'Send' or enter to send");
  29.                 b3 = new JPanel();
  30.                 b3.setBackground(Color.GRAY);
  31.                 b3.setLayout(new BorderLayout());
  32.                 insert = new JTextField("",29);
  33.                 send = new JButton("Send");
  34.                
  35.                 b1.add(scl);
  36.                 b2.add(space);
  37.                 b3.add(insert,BorderLayout.WEST);
  38.                 b3.add(send,BorderLayout.EAST);
  39.                 pane.add(b1,BorderLayout.NORTH);
  40.                 pane.add(b2,BorderLayout.CENTER);
  41.                 pane.add(b3,BorderLayout.SOUTH);
  42.                
  43.                 send.addActionListener(this);
  44.                 insert.addActionListener(this);
  45.         }

  46.         public void actionPerformed(ActionEvent e) {
  47.                 // TODO Auto-generated method stub
  48.                 String input = insert.getText();
  49.                 insert.setText("");
  50.                 boolean answer=false;
  51.         
  52.                 if(e.getActionCommand().equals("Send"))
  53.                         {
  54.                                 if(input.length()==0)
  55.                                 {
  56.                                         area.setText(area.getText()+"You Say: "+input+"\n");
  57.                                         area.setText(area.getText()+"ChatBot Say: I got no idea what are you said\n");
  58.                                 }
  59.                                 else
  60.                                 {
  61.                                         area.setText(area.getText()+"You Say: "+input+"\n");
  62.                                         area.setText(area.getText()+"ChatBot Say: "+input+"\n");
  63.                                 }
  64.                         }
  65.         }

  66.         public static void main(String[] args) {
  67.                 // TODO Auto-generated method stub
  68.                 Chatbot chat = new Chatbot();
  69.                 chat.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  70.                 chat.setTitle("ChatBot");
  71.                 chat.setSize(400,500);
  72.                 chat.setVisible(true);

  73.         }

  74.         
  75. }
复制代码
本帖最后由 shern91 于 20-5-2014 04:12 PM 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 21-5-2014 09:11 PM | 显示全部楼层
不會Java.
你看看就好,等其他人給你比較好的答覆吧.
你看到的可能是用一個class來建立database.
key是你的user的input
phrase是你的bot的幾個可以選的答覆.
比如
  • myVocab.addKey("hello");
  •                 myVocab.addPhrase("hello", "Hello, my name is chatbot");
  •                 myVocab.addPhrase("hello", "i am chat bot");
如果input是hello,或帶有hello的字眼,你的bot就會隨機答覆 hello, my name is chatbot 或 i am chat bot.
如果找不到對應的答覆,隨便給他一個'sorry, I dont understand"之類的東西吧



回复

使用道具 举报

 楼主| 发表于 22-5-2014 12:32 AM | 显示全部楼层
yan13 发表于 21-5-2014 09:11 PM
不會Java.
你看看就好,等其他人給你比較好的答覆吧.
你看到的可能是用一個class來建立database.

谢谢你的回复,可是我找了很久找不到example
回复

使用道具 举报

发表于 22-5-2014 01:08 AM | 显示全部楼层
shern91 发表于 22-5-2014 12:32 AM
谢谢你的回复,可是我找了很久找不到example

https://code.google.com/p/chat-a ... tai/ChatAI.java?r=3
回复

使用道具 举报

 楼主| 发表于 22-5-2014 02:29 PM | 显示全部楼层
yan13 发表于 22-5-2014 01:08 AM
https://code.google.com/p/chat-ai/source/browse/trunk/Chat-AI/src/chatai/ChatAI.java?r=3

谢谢你给的link,我看了不是很懂。可是我突然想到一个idea,就是找keyword,结果自己写了一点,可是我是用if else,感觉上不是和符合AI的logic或者concept那样,我的代码如下..

老师要求我们的chatbot是写在马来文的...
  1. if(input.length()==0)
  2.                                 {
  3.                                         area.setText(area.getText()+"Kamu : "+input+"\n");
  4.                                         area.setText(area.getText()+"ChatBot : Kenapa kamu tidak bercakap?\n");
  5.                                 }
  6.                                 else if(input.indexOf("hello") != -1)
  7.                                 {
  8.                                         area.setText(area.getText()+"kamu : "+input+"\n");
  9.                                         area.setText(area.getText()+"ChatBot : Hello, nama saya ChatBot.\n");
  10.                                 }
复制代码
回复

使用道具 举报

发表于 22-5-2014 06:26 PM | 显示全部楼层
AI嗎.....
我沒真真的去瞭解.講錯的話請纠正.
理論上就是有學習能力.
粗燥點的做法就是.bot:awak kat mana. user:kat hati mu.
把user的回答save下來,改天user問.awak kat mana.bot就多一個回答了..kat hati mu.
高點的會人性化.比如文雅,豪邁,撒嬌,膽小等等.
你用的方法和你在youtube看到的差不多阿
回复

使用道具 举报

Follow Us
 楼主| 发表于 22-5-2014 08:13 PM | 显示全部楼层
yan13 发表于 22-5-2014 06:26 PM
AI嗎.....
我沒真真的去瞭解.講錯的話請纠正.
理論上就是有學習能力.

谢谢你的回复...如果需要save那得用到database?可是一直if else if else好像不是很好看那样,哈哈
回复

使用道具 举报

发表于 23-5-2014 01:42 PM | 显示全部楼层
shern91 发表于 22-5-2014 02:29 PM
谢谢你给的link,我看了不是很懂。可是我突然想到一个idea,就是找keyword,结果自己写了一点,可是我是用 ...

这样做if else,你都会累啦,老师有规定不可以用google api 吗? 呵呵
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 23-5-2014 02:28 PM | 显示全部楼层
无名无姓也无性 发表于 23-5-2014 01:42 PM
这样做if else,你都会累啦,老师有规定不可以用google api 吗? 呵呵

老师给自由发挥,可是我不懂什么是google api
回复

使用道具 举报

发表于 23-5-2014 02:57 PM | 显示全部楼层
shern91 发表于 23-5-2014 02:28 PM
老师给自由发挥,可是我不懂什么是google api

google 的我不懂去那里找了,不过你可以看看这个
http://www.wolframalpha.com/input/?i=how+are+you
回复

使用道具 举报

 楼主| 发表于 23-5-2014 04:20 PM | 显示全部楼层
无名无姓也无性 发表于 23-5-2014 02:57 PM
google 的我不懂去那里找了,不过你可以看看这个
http://www.wolframalpha.com/input/?i=how+are+you

怎样用的? 我download不到,写新的字link去别的地方
回复

使用道具 举报

发表于 23-5-2014 04:28 PM | 显示全部楼层
https://developer.wolframalpha.com/portal/apisignup.html

怎样用自己学了,我没玩。
回复

使用道具 举报

 楼主| 发表于 23-5-2014 04:40 PM | 显示全部楼层
无名无姓也无性 发表于 23-5-2014 04:28 PM
https://developer.wolframalpha.com/portal/apisignup.html

怎样用自己学了,我没玩。

好的,非常谢谢你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 31-8-2025 03:11 AM , Processed in 0.108184 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表