人工智能实验--推理树

来源:互联网 发布:rj45都有网络变压器吗 编辑:程序博客网 时间:2024/06/05 11:43

人工智能实验--推理树

以下为实验的代码部分:

1.   Frame.java

package com.dae.wan;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;


public class Frame extends JFrame{
    private static JTextField name = new JTextField(20);
    private static JButton send = new JButton("匹配");
    
    private static JTextArea results = new JTextArea(30, 50);

    public static JFrame frame;
    public static JLabel label;
    public static String endStr;
    public static void main(String[] args) throws IOException {
        
        //JOptionPane.showMessageDialog(null, "发送内容不能为空!", "警告", 1);
        
        
        
        // TODO Auto-generated method stub
        new Frame();
        send.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                // TODO Auto-generated method stub
                // 去掉关键字的前后空格
                String result = results.getText().trim();
                /*String[] arr1 = result.split(",");
                for(int i=0;i<arr1.length;i++){
                    System.out.println(arr1[i]);
                }*/
                
                
                List list = new ArrayList<Rule>();
                List list1 = new ArrayList<>();
                List list2 = new ArrayList<>();
//                String st[] = {"暗斑点","长脖子","长腿","奶","蹄"};
                String st[] = result.split(",");
                String animals[] = {"虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","信天翁"};
                for(int i=0;i<st.length;i++){
                    list1.add(st[i]);
                }
                for(int i=0;i<animals.length;i++){
                    list2.add(animals[i]);
                }
                System.out.println(list1);
                
                
                /*******************************************************************************/
                
                
                Rule rule;
                String str1[] = {"毛发"};  String name1 = "哺乳动物";
                rule = new Rule(str1,name1,str1.length);list.add(rule);
                String str2[] = {"奶"};  String name2 = "哺乳动物";
                rule = new Rule(str2,name2,str2.length);list.add(rule);
                String str3[] = {"羽毛"};  String name3 = "鸟";
                rule = new Rule(str3,name3,str3.length);list.add(rule);
                String str4[] = {"会飞","下蛋"};  String name4 = "鸟";
                rule = new Rule(str4,name4,str4.length);list.add(rule);
                String str5[] = {"吃肉"};  String name5 = "食肉动物";
                rule = new Rule(str5,name5,str5.length);list.add(rule);
                String str6[] = {"犬齿","爪","眼睛盯着前方"};  String name6 = "食肉动物";
                rule = new Rule(str6,name6,str6.length);list.add(rule);
                String str7[] = {"哺乳动物","蹄"};  String name7 = "有蹄类动物";
                rule = new Rule(str7,name7,str7.length);list.add(rule);
                String str8[] = {"哺乳动物","反刍"};  String name8 = "有蹄类动物";
                rule = new Rule(str8,name8,str8.length);list.add(rule);
                String str9[] = {"哺乳动物","食肉动物","黄褐色","暗斑点"};  String name9 = "金钱豹";
                rule = new Rule(str9,name9,str9.length);list.add(rule);
                String str10[] = {"哺乳动物","食肉动物","黄褐色","黑色条纹"};  String name10 = "虎";
                rule = new Rule(str10,name10,str10.length);list.add(rule);
                String str11[] = {"有蹄类动物","长脖子","长腿","暗斑点"};  String name11 = "长颈鹿";
                rule = new Rule(str11,name11,str11.length);list.add(rule);
                String str12[] = {"有蹄类动物","黑条纹"};  String name12 = "斑马";
                rule = new Rule(str12,name12,str12.length);list.add(rule);
                String str13[] = {"鸟","不会飞","长脖子","长腿","黑白色"};  String name13 = "鸵鸟";
                rule = new Rule(str13,name13,str13.length);list.add(rule);
                String str14[] = {"鸟","不会飞","游泳","黑白色"};  String name14 = "企鹅";
                rule = new Rule(str14,name14,str14.length);list.add(rule);
                String str15[] = {"鸟","善飞"};  String name15 = "信天翁";
                rule = new Rule(str15,name15,str15.length);list.add(rule);
                
                
                /****************************************************************************************/
                
                
                
                for(int i=0;i<15;i++){
                    Rule r = (Rule) list.get(i);
//                    System.out.println(r);
//                    System.out.println(r.getStr()[r.getLength()-1]);
                    int j;
//                    System.out.println(r.getStr()[0]);
                    for(j=0;j<r.getLength();j++){
                        if(!list1.contains(r.getStr()[j])){
                            break;
                        }
                    }
                    if(j==r.getLength()){
                        list1.add(r.getName());
                    }
                    if(list2.contains(list1.get(list1.size()-1))){
                        endStr = "匹配到该动物为-->"+list1.get(list1.size()-1);
                        System.out.println(endStr);
                        name.setText(endStr);
                        break;
                    }
                }
                if(!list2.contains(list1.get(list1.size()-1))){
                    endStr = "所给条件不充足,不能确定该动物属性";
                    System.out.println(endStr);
                    name.setText(endStr);
                }
                
                /**********************************************************************************/
                
                
                
                
//                name.setText(result);
                // 如果去掉关键字后长度为0,则显示没有匹配成功的
            }
        });
        
    }


    public Frame() throws SocketException {
        setVisible(true);
        setSize(600, 400);
        setTitle("发送端");
        JPanel top = new JPanel();
        label = new JLabel();
        // top.add(new JLabel("输入信息点击发送:"));
        top.add(name);
        top.add(send);
        top.add(label);
        add(BorderLayout.SOUTH, top);
        add(new JScrollPane(results));
    }

    
}

2.     Rule.java

package com.dae.wan;

import java.util.Arrays;

public class Rule {
    private String str[];
    private String name;
    private int length;
    public String[] getStr() {
        return str;
    }
    public void setStr(String[] str) {
        this.str = str;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getLength() {
        return length;
    }
    public void setLength(int length) {
        this.length = length;
    }
    public Rule() {
        super();
    }
    public Rule(String[] str, String name, int length) {
        super();
        this.str = str;
        this.name = name;
        this.length = length;
    }
    @Override
    public String toString() {
        return "Rule [str=" + Arrays.toString(str) + ", name=" + name
                + ", length=" + length + "]";
    }
    
    
}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一体机电池不耐用怎么办 血糖偏高怎么办雅培益力佳SR 投诉电话打不通怎么办 宝宝换奶粉拉肚子怎么办 微店没有客源怎么办 itunes文件被保护怎么办 魅族e1黑屏了怎么办 窗帘打孔的扣环怎么办 棉质裤子掉色怎么办 孕期喝咖啡了怎么办 实体店买到假手机怎么办 派派提现没有那么多好友怎么办 派派提现没有支付宝怎么办 电脑电源不够用怎么办 电脑电源不够会怎么办 中行信用卡异常了怎么办 美借还款后秒拒怎么办 海尔空调关不了怎么办 华为p9无服务怎么办 贝贝买到假货怎么办 京东不予退货怎么办? 咸鱼收到货不对怎么办 闲鱼没收到货怎么办 淘宝购物不到货怎么办 百世快递不派送怎么办 圆通快递不派送怎么办 无卡存款没到账怎么办 中国银行分行冻结信用卡怎么办 银行信用卡没还怎么办 免税店提货单丢了怎么办 店长故意整我怎么办 被康妆大道骗了怎么办 银座卡丢了怎么办 银座消费卡丢失怎么办 天津欠债不还怎么办 苹果x买到假的怎么办 网贷到我们家要钱怎么办? 网贷上门要钱怎么办 红酒盖子岂不开怎么办 小程序尚未发布怎么办 魔域9星爆满怎么办