查看: 1160|回复: 12
|
想用JAVA做一个简单的ChatBot,请各位大大帮忙
[复制链接]
|
|
老师给一个AI的assignment,说用甚么programming language都可以,我就用java写了一点,可是到后面没idea了,我要怎样去determin user的input来给回复呢?怎样去compare那个input或者找input的keyword?我在youtube看了一个教学,他是大概这样做的- myVocab.show(false);
- myVocab.addKey("hello");
- myVocab.addPhrase("hello", "Hello, my name is chatbot");
- myVocab.addPhrase("hello", "i am chat bot");
- myVocab.addKey("goodbye");
- myVocab.addPhrase("goodbye", "it was nice talking to u");
- myVocab.addPhrase("goodbye", "See you in some other time");
- myVocab.addKey("how are you");
- myVocab.addPhrase("how are you", "I'm fine and you?");
- myVocab.addPhrase("how are you", "I'm doing great");
- myVocab.addKey("i am good");
- myVocab.addPhrase("i am good", "that's is good to hear");
- myBrain = new Brain(myVocab);
复制代码 上面的只是一小段,可是我找不到addKey和addPhrase的example
我自己写的如下 ,请各位大大给些意见,万分感激- import java.awt.*;
- import javax.swing.*;
- import java.awt.event.*;
- import java.util.ArrayList;
- import java.util.List;
- public class Chatbot extends JFrame implements ActionListener{
-
- private JTextField insert;
- private JTextArea area;
- private JButton send;
- private JPanel b1,b2,b3;
- private JScrollPane scl;
- private JLabel space;
- private Brain myBrain;
- private Vocabulary myVocab;
- public Chatbot()
- {
- Container pane=getContentPane();
- pane.setBackground(Color.white);
- pane.setLayout(new BorderLayout());
- b1 = new JPanel();
- area = new JTextArea(20,30);
- area.setEditable(false);
- area.setLineWrap(true);
- scl = new JScrollPane(area);
- scl.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- b2 = new JPanel();
- space = new JLabel("Press button 'Send' or enter to send");
- b3 = new JPanel();
- b3.setBackground(Color.GRAY);
- b3.setLayout(new BorderLayout());
- insert = new JTextField("",29);
- send = new JButton("Send");
-
- b1.add(scl);
- b2.add(space);
- b3.add(insert,BorderLayout.WEST);
- b3.add(send,BorderLayout.EAST);
- pane.add(b1,BorderLayout.NORTH);
- pane.add(b2,BorderLayout.CENTER);
- pane.add(b3,BorderLayout.SOUTH);
-
- send.addActionListener(this);
- insert.addActionListener(this);
- }
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- String input = insert.getText();
- insert.setText("");
- boolean answer=false;
-
- if(e.getActionCommand().equals("Send"))
- {
- if(input.length()==0)
- {
- area.setText(area.getText()+"You Say: "+input+"\n");
- area.setText(area.getText()+"ChatBot Say: I got no idea what are you said\n");
- }
- else
- {
- area.setText(area.getText()+"You Say: "+input+"\n");
- area.setText(area.getText()+"ChatBot Say: "+input+"\n");
- }
- }
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Chatbot chat = new Chatbot();
- chat.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- chat.setTitle("ChatBot");
- chat.setSize(400,500);
- chat.setVisible(true);
- }
-
- }
复制代码 本帖最后由 shern91 于 20-5-2014 04:12 PM 编辑
|
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 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是写在马来文的... - if(input.length()==0)
- {
- area.setText(area.getText()+"Kamu : "+input+"\n");
- area.setText(area.getText()+"ChatBot : Kenapa kamu tidak bercakap?\n");
- }
- else if(input.indexOf("hello") != -1)
- {
- area.setText(area.getText()+"kamu : "+input+"\n");
- area.setText(area.getText()+"ChatBot : Hello, nama saya ChatBot.\n");
- }
复制代码 |
|
|
|
|
|
|
|
发表于 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看到的差不多阿 |
|
|
|
|
|
|
|

楼主 |
发表于 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 吗? 呵呵
|
|
|
|
|
|
|
|

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

楼主 |
发表于 23-5-2014 04:20 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 23-5-2014 04:28 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 23-5-2014 04:40 PM
|
显示全部楼层
无名无姓也无性 发表于 23-5-2014 04:28 PM 
https://developer.wolframalpha.com/portal/apisignup.html
怎样用自己学了,我没玩。
好的,非常谢谢你
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|