Java语言怎么让现在大火的人工智能算法实现对一个网站上问题的自动回答的功能的开发,这是网络爬虫还是网络机器人的算法

Java语言怎么让现在大火的人工智能算法实现对一个网站上问题的自动回答的功能的开发,这是网络爬虫还是网络机器人的算法?两种技术的路线的区别大么

要实现对一个网站上问题的自动回答的功能涉及到两个方面的技术比如说, 网络爬虫和自然语言处理(NLP),这两种技术是相互关联的,但有着不同的功能和应用领域。
至于你说的两种技术路线的区别,可以这么说, 网络爬虫主要关注从网页中提取信息的过程,包括抓取、解析和存储等操作;而自然语言处理主要关注对文本数据进行理解、分析和生成的过程,包括词法分析、句法分析、语义理解、机器翻译等等。两者在技术实现上有一些重叠,但侧重点不同

参考:

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7434631
  • 这篇博客你也可以参考下:2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】
  • 您还可以看一下 马克老师的java大数据培训学校全套教材--1)青少年扫盲入门初级课程中的 类和对象的属性3小节, 巩固相关知识点
  • 除此之外, 这篇博客: java的反射用不好容易走火入魔?还可以用内省啊!中的 使用内省替代直接使用反射可以防止破坏类的封装 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    我们定义一个人的类型,其中包括年龄和是否成年两个属性。在修改年龄属性的时候会同时修改是否成年的属性。我们假设18岁和18岁以上就是成年,否则就是未成年。

    import java.beans.IntrospectionException;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.text.MessageFormat;
    
    class Person {
        /**
         * 18岁成年
         */
        private static final int ADULT_AGE = 18;
    
        /**
         * 年龄
         */
        private int     age;
        /**
         * 是否成年
         */
        private boolean adult;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
            this.adult = age >= ADULT_AGE;
        }
    
        public boolean isAdult() {
            return adult;
        }
    
        public String toString() {
            return MessageFormat.format("age:{0},adult:{1}", age, adult);
        }
    }
    
    /**
     * @author 二当家的白帽子 https://le-yi.blog.csdn.net/
     */
    public class Test {
        /**
         * 利用反射修改对象属性
         * @param o
         * @param fieldName
         * @param value
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        public static void changeObjectFieldByReflection(Object o, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
            Field field = o.getClass().getDeclaredField(fieldName);
            field.setAccessible(true);
            field.set(o, value);
        }
    
        /**
         * 利用内省修改对象属性
         * @param o
         * @param fieldName
         * @param value
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        public static void changeObjectFieldByIntrospector(Object o, String fieldName, Object value) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
            PropertyDescriptor pd = new PropertyDescriptor(fieldName, o.getClass());
            pd.getWriteMethod().invoke(o, value);
        }
    
        public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IntrospectionException, InvocationTargetException {
            Person p = new Person();
            changeObjectFieldByReflection(p, "age", 20);
            System.out.println("反射修改属性破坏类的封装,使其内部状态错误:");
            System.out.println(p);
    
            changeObjectFieldByIntrospector(p, "age", 18);
            System.out.println("内省修改属性未破坏类的封装:");
            System.out.println(p);
        }
    }
    

    在这里插入图片描述

    可以看到,反射由于是直接修改属性,所以破坏了类中封装的逻辑(20岁却不是成年)。

    而内省由于修改属性还是调用了set方法,也就是说和正常修改对象属性调用了相同的方法,所以类的封装性不会遭到破坏。

    当然由于内省其实本质也是反射,可以说是封装了反射,所以如果反射用的正确,也是安全的,我们可以根据属性名去获取相应的set和get方法,然后再去调用,但是这种情况下内省使用起来就更方便,毕竟没有必要重复发明一个车轮子,圆形轮子已经是很多年很多年智慧的结晶了。

    那么问题来了,既然内省就是调用set和get方法,那我为什么不直接调用set和get方法,而要使用内省呢?



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^