精华内容
下载资源
问答
  • 本书具有以下特点:实例工程背景强,理论与软件操作结合紧密,并详细讲解软件使用过程中的常见问题,能够快速提高读者的工程实例分析能力;切实从读者学习和使用的实际出发,安排章节顺序和内容;图文并茂,讲述过程...
  • MySQL常见问题及解决方案

    千次阅读 2019-08-21 17:20:00
    本文主要介绍使用 MySQL 过程中遇到的常见问题及相应的解决方案。 1. show databases查询结果不完整 【问题描述】: 使用“show databases”命令查询数据库信息时,查询出来的结果没有将所有的数据库信息都显示...

    本文主要介绍使用 MySQL 过程中遇到的常见问题及相应的解决方案。

    1. show databases查询结果不完整

    【问题描述】:

    使用“show databases”命令查询数据库信息时,查询出来的结果没有将所有的数据库信息都显示出来,如下:

    上述查询结果只显示了数据库“information_schema”,而实际上还存在其他数据库。

    【解决方案】:

    通常,出现这种情况是因为当前登录 MySQL 的“用户/主机名”权限不足。使用“show grants”命令查询当前用户的权限,如下:

    由上述结果可得到两条信息:

     

    • 当前的mysql用户,是从“localhost”主机登录到 MySQL 服务器的;
    • 对于从“localhost”主机登录到 MySQL 服务器的mysql用户(无论哪个用户身份),都只有 USAGE 权限(即空权限)。

    根据以上两条信息,得知数据库显示结果不完整就是用户/主机名权限不足导致的,所以为了解决此问题,需要放开相应的用户/主机名的权限。

    具体的解决步骤如下:

    1. 在mysql的配置文件 /etc/my.cnf 的“[mysqld]”配置下,添加“skip-grant-tables”,跳过权限检查,如下:

    2. 重启 MySQL 服务器,如下:

    systemctl restart mysqld

    3. 再次连接 MySQL 服务器,并查看数据库信息:

    [root@node1 ~]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.6.40 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | testdb             |
    +--------------------+
    4 rows in set (0.00 sec)
    
    mysql> 

    在上述结果中能够看到,现在已经能够正常显示所有数据库了。

    但是,这是我们跳过了权限检查的结果,而跳过权限检查可能会带来数据库安全隐患,所以我们需要通过修改 用户/主机名 的权限来从根本上解决此问题。

    4. 放开对应 用户/主机名 的权限

    MySQL 数据库的 用户/主机名 权限信息存放在数据库“mysql”下的表“user”中,如下:

    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> 
    mysql> select host,user,password from user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | node1     | root |          |
    | %         | root |          |
    | ::1       | root |          |
    | localhost |      |          |
    | node1     |      |          |
    +-----------+------+----------+
    5 rows in set (0.00 sec)
    
    mysql> 

    在 user 表中,我们看到了主机名(host)为“localhost ”的记录,通过下面的命令删除、插入该条记录,来放开其对应的权限,如下:

    mysql> 
    mysql> delete from user where host = 'localhost';
    Query OK, 1 row affected (0.00 sec)
    
    mysql> 
    mysql> insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '', 'N');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select host,user,password from user;
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | node1     | root |          |
    | %         | root |          |
    | ::1       | root |          |
    | localhost | root |          |
    | node1     |      |          |
    +-----------+------+----------+
    5 rows in set (0.00 sec)
    
    mysql> 
    

    执行上述操作之后,就放开了主机名为“localhost ”、用户名为“root”的用户权限。

    注意:上面的 insert 操作的内容需要根据实际情况进行设置。

    5. 去掉配置文件 /etc/my.cnf 中的“skip-grant-tables”内容,重启 mysql ,再次登录mysql,查询数据库,观察查询结果,如下:

    [root@node1 ~]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.6.40 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | testdb             |
    +--------------------+
    4 rows in set (0.00 sec)
    
    mysql> show grants;
    +---------------------------------------------------------------------+
    | Grants for root@localhost                                           |
    +---------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
    +---------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    
    mysql> 

    上述结果显示,主机名为“localhost ”、用户名为“root”的用户具有的所有权限(ALL PRIVILEGES);并且在查询数据库时,也能够显示所有的数据库信息了。

     

    2. 远程客户端连接不到mysql服务器

    2.1 防火墙问题

    【问题现象】:

    [root@node2 ~]# mysql -h "192.168.213.130" -u root -p ""
    
    Enter password: 
    ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.213.130' (113)
    [root@node2 ~]# 

    【解决方案】:

    查看远程客户端以及mysql服务器的防火墙是否开启,如果是,先关闭防火墙,再进行连接。如下:

    [root@node3 ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2018-05-24 20:26:21 CST; 11min ago
         Docs: man:firewalld(1)
     Main PID: 651 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─651 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    
    May 24 20:26:21 node3 systemd[1]: Starting firewalld - dynamic firewall daemon...
    May 24 20:26:21 node3 systemd[1]: Started firewalld - dynamic firewall daemon.
    [root@node3 ~]# 
    [root@node3 ~]# systemctl stop firewalld
    [root@node3 ~]# 

    再次连接mysql服务器,能够连接成功了。

     

    展开全文
  • 计算机类论文答辩常见问题

    万次阅读 多人点赞 2020-01-23 10:54:10
    软件开发类题目常见问题 软件工程相关问题 1.B/S结构程序与C/S结构程序各有哪些特点? 2.说明软件设计与开发过程分为哪几个阶段。每个阶段你都做了哪些工作,得到什么设计结果。 3.需求分析阶段的主要任务是什么?...

    软件开发类题目常见问题
    软件工程相关问题
    1.B/S结构程序与C/S结构程序各有哪些特点?
    2.说明软件设计与开发过程分为哪几个阶段。每个阶段你都做了哪些工作,得到什么设计结果。
    3.需求分析阶段的主要任务是什么?为了完成这些任务,你都做了哪些工作?
    4.什么是数据流图?什么是数据字典?它们的作用是什么?
    5.说明管理信息系统设计和开发的基本过程分为几个阶段?每个阶段的主要工作是什么?
    6.这个课题是你独自完成的还是团体共同完成的?
    7.简单介绍你的课题以及你主要负责的模块?有什么特点?
    8.软件的开发一般分为几个步骤?
    9.软件需求分析的目的是什么?主要分析哪些方面的需求?你采用了什么方法进行需求分析?
    10.你用的系统设计方法是什么?这种方法的基本思想是怎样的?
    11.软件测试有哪些方法?你采用了什么测试方法?
    数据库相关问题
    1.数据库的设计分为几个步骤?
    2.概念数据库设计的主要任务是什么?应该完成哪些工作?
    3.逻辑数据库设计的主要任务是什么?应该完成哪些工作?
    4.物理数据设计的主要任务是什么?应该完成哪些工作?
    5.这个课题你选用的数据库管理系统是什么?采用什么接口?为什么这么选择?
    6.关系模式范式化有什么意义?在你的设计中式如何体现的?
    7.请解释数据库的逻辑结构和物理结构的区别。
    8.解释ER图并说明ER图的作用。
    9.实体之间联系的类型有几种?详细解释它们的含义。
    10.请说明主键和外键的作用,你设定主键和外键的依据是什么?
    11.数据库/数据库管理系统/数据库系统在概念上有什么区别?结合你的设计说明。
    12.说明在数据库表中,数据之间的联系是如何体现的。
    13.你用什么方法保证数据完整性?
    14.在数据库设计阶段,你遇到的最大困难是什么?你是如何解决的?
    15.解释实现数据库结构的SQL语句。
    16.说明在设计数据库表时你是如何考虑的?
    17.你是如何创建界面与数据库的连接?

    编程相关问题
    1.演示一下你的课题成品,然后请找出实现某一功能的代码块?
    2.解释一段主要的源代码。
    3.说明应用程序访问数据库的方法。
    4.编码中用到了什么关键技术?
    其它
    1.软件开发过程中遇到什么问题?如何解决的?
    2.说下你的课题将来的应用以及在哪方面可以改进?
    3.在系统安全性方面你是如何考虑的?
    局域网规划设计类题目常见问题
    1.介绍一下您和XX学校(公司、小区)的关系?为什么选择它作为毕业设计的设计目标?
    2.这个课题是你独自完成的还是团体共同完成的?如果是团体共同完成的,你负责哪部分工作?
    3.局域网规划设计的一般步骤是什么?每个步骤都要完成哪些工作?
    4.局域网设计的需求分析包括哪些内容?你怎么做的?
    5.网络设计方案是如何体现网络设计需求的?
    6.网络设计的原则有哪些?在您的设计中如何体现这些原则的?
    7.局域网流量和带宽是怎么确定的?
    8.网络拓扑结构有哪几种?优缺点各是什么?本设计采用哪种结构?为什么?
    9.请解释论文中的网络拓扑结构图。
    10.IP地址的概念,分为几类?你用的是哪一类?你是怎么考虑的?
    11.IP地址分哪几类?怎么判断是哪一类IP地址?什么是MAC地址?IP地址、MAC地址分别是哪一层的地址?
    12.为什么要划分VLAN,其主要作用是什么?划分VLAN的方法有哪些,各有什么特点?
    13.子网和VLAN的区别是什么?
    14.NAT转换的概念?实现方法?
    15.什么是公有IP地址和私有IP地址?它们之间怎么转换?
    16.为什么要划分子网?掩码的作用是什么?
    17.网络的安全如何维护?请介绍常用的服务的端口?请介绍什么是ARP攻击、DDOS攻击及其原理?
    18.网卡、集线器、二层交换机、三层交换机、路由器的作用是什么?有什么区别?是哪一层的设备?
    19.接入internet的方式是什么?
    20.网络冗余性是如何考虑的?
    自动化专业毕设答辩常见问题
    一、××零件数控加工设计
    1.请解释一段你所编制的数控机床加工程序。
    2.数控机床坐标轴是如何命名和规定方向的?
    3.在数控编程中,绝对坐标和相对坐标有什么区别,各用什么指令?你在编程中使用的哪种坐标?
    4.什么是刀具半径补偿?它的优点是什么?
    5.数控加工中,切削用量包括哪几个参数,选择的原则是什么?
    6.数控加工时,选择工件定位和夹紧方案有哪些原则?
    7.常见的数控加工工艺文件有哪些?
    二、XXX(人事信息、考勤、仓储、办公)自动化系统的设计与实现
    1.系统开发用到了什么技术(采用的数据库及程序语言等)?
    2.请解释系统的功能结构图。
    3.请解释业务流程图。
    4.数据库设计包含哪几个环节?
    5.数据库需求分析的结果是什么?数据库概念结构设计的结果是什么?
    6.逻辑结构设计(E-R图向关系模型的转换)的结果是什么?
    7.请解释主键和外键的作用并说明它们的区别。
    8.请解释一段程序。
    9.系统测试包含哪些方面?请解释黑盒测试和白盒测试的概念。
    三、XX工业以太网的规划与设计
    1.该设计中说明计算机控制设备的数量是怎样确定的?
    2.拓扑图中各种设备的作用是什么?
    3.拓扑图中各点的速率大概是多少?
    4.组网时采用了什么样的传输介质?为什么?
    5.IP地址分哪几类?
    6.本方案采用哪一类IP地址?为什么?
    7.所设计的网络使用了何种安全措施?如何实施的?
    四、基于XX现场总线的控制(监控)系统的规划与设计
    1.本设计采用了哪种现场总线?为什么?
    2.该系统的测点个数和控制对象个数是如何确定的?测量对象是什么?
    3.请简单介绍控制(监控)系统的总体功能。
    4.请解释控制系统的整体结构图,说明为什么采用这种结构?
    5.信号采集电路(通信电路)是怎么设计的?
    6.请解释一段程序。
    7.本方案采用哪一类IP地址?为什么?
    8.现场布线方案是如何确定的?
    五、XX监测系统设计与实现
    1.软件的开发一般分为几个步骤?
    2.你用的系统设计方法是什么?这种方法的基本思想是怎样的?
    3.软件测试有哪些方法?你采用了什么测试方法?
    4.数据库的设计分为几个步骤?
    5.在数据库表中,数据之间的联系是如何体现的?举例说明。
    6.演示一下你的系统,然后请找出实现某一功能的代码块。解释一段主要的源代码。
    7.说明应用程序访问数据库的方法。
    8.请说明你所设计的检测系统的结构?包括哪些组成部分?各部分之间如何通信?
    9.请说明你所设计的检测系统的工作流程?
    10.请说明你所设计的监控系统的控制原理和控制过程?系统应用的效果如何?
    六、基于PLC控制的XX系统设计
    1.请解释被控系统的工艺流程。
    2.被控系统的电气控制要求是怎样的?
    3.解释你设计的控制系统的结构和各部分的控制功能。
    4.PLC、传感器、执行器的选型是如何考虑的?
    5.请解释PLC的I/O端口分配是如何考虑的?
    6.请解释你设计的电气控制原理图。
    7.选择一个梯形图,解释其功能,并说明参数设定依据。

    展开全文
  • Eureka常见问题汇总及注意事项

    千次阅读 2018-12-22 23:32:03
    现把一些常见问题、注意事项,与大家进行分享。  Eureka一般出现问题原因分为两类: Eureka版本不同带来的问题 Eureka参数配置问题 生产环境下,Eureka参数配置建议使用默认配置,除非明确清楚或...

    0、前言      

          在Spring Cloud中,Eureka是接触和使用最多的组件,也是最重要的一个组件,在使用过程中经常会遇到各类突发问题,来的莫名奇妙。现把一些常见问题、注意事项,与大家进行分享。

         Eureka一般出现问题原因分为两类:

    • Eureka版本不同带来的问题
    • Eureka参数配置问题

    生产环境下,Eureka参数配置建议使用默认配置,除非明确清楚或明确有这样修改默认配置的需求。

    1、EnableEurekaClient和EnableDiscoveryClient

          在不同的应用程序中,有人使用EnableEurekaClient,有人使用EnableDiscoveryClient,都能作为Eureka Client的注解。有何区别呢?

         服务发现是有多实现方式,即:多种组件可以作为注册中心,eurekaconsulzookeeper@EnableEurekaClient是在spring-cloud-netflix中,仅仅适合于Eureka注册中心。@EnableDiscoveryClient是在spring-cloud-commons中,适合Eureka、Consul、Zookeeper注册中心。在使用时要注意使用依赖的包,否则会发现找不到该注解。

    参考:https://stackoverflow.com/questions/31976236/whats-the-difference-between-enableeurekaclient-and-enablediscoveryclient

    2、已停止的微服务不注销或注销有延迟

         在使用Eureka Client时,可能会发现当微服务(Eureka Client)已经停止了,而注册中心仍然显示该服务处于正常状态,或者过段时间才会注销。然而,这种情况在实际应用中是大家不太希望看见的,希望一旦服务发生异常或宕机,注册中心应该理解体现出来。

         这是由于Eureka Server注销无效节点周期、自我保护模式的因素造成的,因此会出现服务不注销或注销有延迟。解决办法如下:

    • Eureka Server

    关闭自我保护模式,并配置注销无效节点周期时间间隔。

    # 默认值为true。设为false, 关闭自我保护, 从而保证会注销微服务
    eureka.server.enable-self-preservation=false
    
    # 清理间隔(单位毫秒,默认是60 * 1000)。根据需求将时间间隔设置短些,例如:设置1秒,一旦down掉,则会立即注销
    eureka.server.eviction-interval-timer-in-ms=1000
    

    Eureka自我保护模式:

        主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。

    参考:https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication

    参考:https://github.com/spring-cloud/spring-cloud-netflix/issues/1322

    • Eureka Client

    当Client端开启健康检查时,可以适当的按需配置续约更新时间和到期时间。这样做智能在一定程度上缓解注销延迟的程度,但不能真正解决立即注销,可以在进行微服务(Eureka Client)异常或关机时,主动调用Eureka Rest API来注销该服务,注销接口:http://localhost:8761/eureka/apps的DELETE 请求方式。

    # 默认值为false。设为true,开启健康检查(需要spring-boot-starter-actuator 依赖)
    eureka.client.healthcheck.enabled=true
    
    # 续约更新时间间隔(默认是30秒)
    eureka.instance.lease-renewal-interval-in-seconds=?
    
    # 续约到期时间(默认90秒)
    eureka.instance.lease-expiration-duration-in-seconds=?
    

    参考:https://stackoverflow.com/questions/39661399/eureka-slow-to-remove-instances

    3、Eureka的UNKNOWN 问题

          注册中心(Eureka Server)中服务状态,常见的有UP、DOWN,但有时会出现另外一种UNKNOWN状态,或者UNKNOWN服务名。

    • UNKNOWN服务名

         问题显而易见,只需在服务(Eureka Client)配置中配置明确的服务名即可。配置参数为spring.application.name 或者 eureka.instance.appname ,如果这两个参数都不配置,则将会出现UNKNOWN服务名。温馨提示:为了程序的可读性,极力推荐配置明确的服务名。

    • UNKNOWN状态

        服务为UNKNOWN状态,是很少见的问题。服务状态用于辨别服务是否可用(可调用),来源于对服务的健康检查(需要spring-boot-starter-actuator的依赖)所致。

        当服务(Eureka Client)配置参数eureka.client.healthcheck.enabled=true时,必须要配置在application.yml或application.properties配置文件中,而不能配置在bootstrap.yml或bootstrap.properties中,否则在一些情况下可能会出现UNKNOWN状态的问题。

    参考:https://github.com/spring-cloud/spring-cloud-netflix/issues/1276

    展开全文
  • FAQ(常见问题解答)

    万次阅读 2018-09-30 08:59:44
    FAQ是英文Frequently Asked Questions的缩写,中文意思就是“经常问到的问题”,或者更通俗地叫做“常见问题解答”。FAQ是当前网络上提供在线帮助的主要手段,通过事先组织好一些可能的常问问答对,发布在网页上为...

    FAQ是英文Frequently Asked Questions的缩写,中文意思就是“经常问到的问题”,或者更通俗地叫做“常见问题解答”。FAQ是当前网络上提供在线帮助的主要手段,通过事先组织好一些可能的常问问答对,发布在网页上为用户提供咨询服务。 

    在很多网站上都可以看到FAQ,列出了一些用户常见的问题,是一种在线帮助形式。在利用一些网站的功能或者服务时往往会遇到一些看似很简单,但不经过说明可能很难搞清楚的问题,有时甚至会因为这些细节问题的影响而失去用户,其实在很多情况下,只要经过简单的解释就可以解决这些问题,这就是FAQ的价值。

    在网络营销中,FAQ被认为是一种常用的在线顾客服务手段,一个好的FAQ系统,应该至少可以回答用户80%的一般问题,以及常见问题。这样不仅方便了用户,也大大减轻了网站工作人员的压力,节省了大量的顾客服务成本,并且增加了顾客的满意度。因此,一个优秀的网站,应该重视FAQ的设计。

    一般是指产品的说明或者使用帮助,如社区软件PHPWind帮助中心:专门介绍phpwind的使用教程和技术分析,使用说明,百度的帮助中心,有的直接当百科全书。其实像百度知道和百度百科就是一个很庞大的FAQ,spacebuilder用户社区中的FAQ就采用了类似百度知道的社会化问答模式。

    FAQ是客户常见的问题,设计的问题和解答都必须是客户经常问到和遇到的。为保证FAQ的有效性,首先要经常更新问题,回答客户提出的一些热点问题;其次是问题要短小精悍,对于提问频率高的常见的简单问题,不宜用很长的文本文件,这样会浪费客户在线时间。而对于一些重要问题应在保证精准的前提下尽可能简短。为保证方便客户使用,首先FAQ应该提供搜索功能,客户通过输入关键字可以直接找到有关问题;其次是问题较多时,可以采用分层目录式的结构组织问题的解答,但目录层次不能太多,最好不要超过四层;第三是将客户最经常提问的问题放到前面,对于其他问题可以按照一定规律排列,常用方法是按字典顺序排列;第四对于一些复杂问题,可以在问题之间设计链接,便于方便地找到相关问题的答案。

    Introduce:日趋增多的网络信息使用户很难迅速从搜索引擎返回的大量信息中找到所需内容。自动问答系统为人们提供了以自然语言提问的交流方式,为用户直接返回所需的答案而不是相关的网页,具有方便、快捷、高效等特点。

    Process:本文的问答系统采用了一个FAQ(Frequently Asked Questions)问答库,并基于句子相似度进行设计。

    1)首先建立一个足够大的问题答案库,即语料库--------建库

    2)然后计算用户提问的问题和语料库中各个问题的相似度-------计算相似度-------余弦定理

    3)最后把相似度较高的问题所对应的答案返回给用户。-------返回结果

    core: 本文的核心是句子相似度的计算,分别使用了TF-IDF和word2vec两种方法对问句进行向量化,并在此基础上使用进行句子相似度的计算。

    Improve:为了提高整个系统的运行速度,本文对算法的计算进行了相应的优化。

    key words:FAQ;句子相似度;TF-IDF;word2vec;余弦定理

    part1: research background and meaning

       基于常问问题集的问答系统是在已有的问题答案对的集合中找到与用户提问相匹配的问题,并将其对应的答案直接返回给用户。

         问答系统是目前自然语言处理领域的一个研究热点

        优点:1)让用户用自然语言句子提问

                  2)为用户返回一个简洁、准确的答案,而不是一些相关的网页。

         与传统的依靠关键字匹配的搜索引擎相比,能够更好地满足用户的检索需求,更准确地找出用户所需的答案,具有方便、快捷、高效等特点。如果用户的提问与以往的记录相符,可直接将对应的答案提交给用户,免去了重新组织答案的过程,可以提高系统的效率。

       常问问题集(FAQ)可以作为自动问答系统中的一个组成部分。它把用户经常提问的问题和相关答案保存起来。对于用户输入的问题,可以首先在常问问题库中查找答案。

        如果能够找到相应的问题,就可以直接将问题所对应的答案返回给用户,而不需要经过问题理解、信息检索、答案抽取等许多复杂的处理过程,提高了效率。我们提出的FAQ(Frequently Asked Questions)系统在根据用户问题建立候选问题集的基础上,建立常问问题集的倒排索引,提高了系统的检索效率,同时,与传统的基于关键词的方法相比,用基于语义的方法计算相似度提高了问题的匹配精度。

    part 2: FAQ Answering System

    2.1 Introduction to FAQ Answering System

        问答式检索系统允许用户用自然语言提问,从大量异构数据中准确而快速查找出提问的答案,是集自然语言处理技术和信息检索技术与一体的新一代搜索引擎。这种提供准确、简洁的信息的方式更接近于人的思维和习惯,是下一代搜索引擎的发展方向。

        FAQ问答系统是一种已有的“问题-答案”对集合中找到与用户提问相匹配的问句,并将其对应的答案返回给用户的问答式检索系统。由于FAQ问答系统免去了重新组织答案的过程,可以提高系统的效率,还可以提高答案的准确性。这其中要解决的一个关键问题是用户问句与“问题-答案”对集合中问句的相似度比较,并把最佳结果返回给用户。

    2.2 The "Questions - Answers" Library

         FAQ问答系统需要一个“问题-答案”库的支撑,库的好坏直接影响问答系统的效果。本设计所用的“问题-答案”库来源于百度知道的问题和对应的答案,共有10000条。用户输入问题,然后从库中匹配相似度符合设计阈值的问题并显示其答案。

         

    部分问题

     

    部分答案

    3 System Design and Implementation

     

    3.1 Design Principles and Flow Charts

    思想:把语料库的问题和用户所提问题预处理,然后向量化,最后通过计算两向量之间的余弦夹角值作为衡量相似度的值。只有该余弦值大于程序设定中的阈值才会将这些问题作为候选问题返回给用户。本设计的阈值设置为0.5,同时并选择相似度最高的前5个问题(Top5)所对应的答案返回给用户。若没有大于阈值的样本,则提示用户当前的提问没有相似的答案。系统的设计框图如图3-1所示。

     

    3.2 Pretreatment of Questions

        预处理是对问句进行初步处理的过程。本文对评论文本依次进行了去空去重、切词分词和停用词过滤操作。

        原始网络评论会存在一些空或重复的问句,须过滤掉这些无价值且影响效率的问句。使用计算机自动地对中文文本进行词语切分的过程称为中文分词(Chinese Word Segmentation),即使中文句子中的词之间有空格标识。若要对一个句子进行分析,就需要将其切分成词的序列,然后以词为单位进行句子的分析,故中文分词是中文自然语言处理中最基本的一个环节。

        分词之后需要对每个词进行词性标注,为接下来的停用词过滤提供便利。停用词(Stop Word)指通常在评论文本中出现的频率较高,但对确定评论的情感类别没有作用的词。停用词过滤指去掉评论文本中停用词的过程。本文使用中科院的“计算所汉语词性标记集”以及哈工大停用词表对评论文本进行停用词过滤。根据“计算所汉语词性标记集”,确定出要过滤掉的词性有:标点符号、介词和代词等,这些词性的词信息量低,无类别区分作用。本文先对评论文本进行词性过滤,再根据哈工大停用词表进一步过滤。

                                 

    预处理后的部分问句

     

    3.3 Text vectorization

    在进行相似度计算之前,需要将每条问句都转换成向量的形式,即将每条问句都映射到一个向量空间,分别使用了两种方法TF-IDF(词频-反向文档频率)和word2vec对问句文本进行向量化。

     

    3.3.1 TFIDF method based on vector space model

    从FAQ中所有预处理后的问句中提取特征后,形成一个词汇表,则FAQ 中的每一个问句都可以用一个n 维的向量来表示。的计算方法为:设在当前问句中出现的次数,为FAQ中含词汇的问句个数,为FAQ中问句的总数,那么

        可以看出,一个问句中出现次数多的词将被赋予较高的值,但这样的词并不一定具有较高的值。

        eg:汉语中“的”出现的频率非常高,TF值(k值)很大,但“的”在很多问句中都出现,它对于分辨各个问句并没有太大的帮助,它的IDF值是一个很小的数。因此,这种方法综合地考虑了一个词的出现频率和这个词对不同问句的分辨能力。

        在计算用户提问问句的n 维向量时,用户提问问句和FQA库中的问句b不是同时向量化的,故在对FQA库中的问句向量化时,需要保存每个特征的ID F值,便于用户提问问句中特征词TFIDF值的计算。

     

    3.3.2 word2vec word vector model

     

    word2vec是用来产生词向量的一组相关模型。它利用输入的语料来产生一个向量空间,在这个向量空间中,每个词对应一个点,语义上相近的词在向量空间上对应的点也相近。

    word2vec中两个重要的模型:

    CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。

    CBOW模型的思想是用上下文来预测当前词的概率,而Skip-gram模型的思想是用当前词来预测其上下文词的概率。它们的目标函数分别为:

     

    左为CBOW模型,右为Skip-gram模型

    本文使用sougou大语料并基于CBOW模型训练得到词向量,然后使用问句中每个特征词对应词向量的算术平均作为问句的句向量。

     

    3.4Calculation of sentence similarity based on cosine theorem

        问句之间的相似度可以转换为向量之间的距离来进行度量。距离越小问句之间的相似性越大,反之亦然。

        本文采用余弦夹角来计算向量之间的相似度,相似问题一般包含更多相同的特征词,两个问句的主题是否接近,取决于它们的特征向量“长得像不像”。是用户提问的问句向量,得到后,它们所对应的两个问句之间的相似度就可以利用和这两个向量之间夹角的余弦值来表示。相似度的计算公式如下所示:

        由上述公式可知,的值越大,说明两者的相似度越高,反之则越低。

        余弦相似度的定义虽然简单,但是在利用上述公式计算两个向量的夹角时,计算量为,当用户提出一个问题时,需计算次(为语料库中问句的数量,本文的语料库中的问句数为10000条),如果语料库很大,则将答案返回给用户需要很长的时间。

        我们这个方案解答需要大概30秒的时间,这个时间对于用户来说过于长,用户体验效果不佳。为了降低计算量,本文在计算相似度时进行了一些简化:

    1)首先,分母部分(即向量的模)不需要重复计算,即可以将它们进行预计算,并将预计算的结果保存起来,等计算向量模的时候,直接取出来即可。

    2)其次,分子部分,即在计算两个向量的内积时,只需考虑向量中的非零元素,计算复杂度取决于两个向量中非零元素个数的最小值。这两个简化方法在使用TF-IDF向量化时效果比较明显,因为TF-IDF得到的向量极其高维和稀疏,而word2vec得到的向量则是低维和稠密,效果不是很明显。

    4Experimental results and analysis

    4.1 Experiment Settings

     

    表4-1 测试问题集

    具有相似性的问题

    基本无相似度的问题

    1.小米怎么发彩信啊?

    1.大脸剪什么短发好看

    2.如何成为经理?

    2.怎么做拔丝地瓜

    3.怎样在聚划算卖东西

    3.华为自动关机为什么

    4.怎样停止建行卡的短信通知?

    4.去哪买手机比较好

    5.你对知音有什么看法

    5.怎样提高数学成绩

    6.地震你怎么看

    6.什么翻译软件比较好

    7.选哪个快递?顺丰咋样

    7.出国去哪里比较好

    8.湖南长沙要穿防晒服吗

    8.身份证掉了怎么补办

    9.三星I910存储量是多少

    9.怎样种蓝庭芥

    10.CAD的修剪命令怎么操作?

    10.理八栋谁最帅

     

    4.2 Experimental Results and Analysis

    基于TF-IDF算法的句子相似度计算方法基本可以回答表4-1中“具有相似性的问题”,而对于表4-1中“基本无相似度的问题”,则会提示用户该问题基于当前的FAQ问答库无法回答,这说明基于相似度的FAQ问答系统完全依赖于语料库。

     

     

    相似问题测试结果

     

     

     

    基本无相似度问题测试结果

     

        当输入与语料库中问题相似的问题时,能得到较为正确的答案。

        而对于与语料库中问题基本无相似度的问题,系统则会提示用户系统回答不了当前问题。

        本文的TF-IDF算法的问答系统设置了相应的阈值,即当用户提问的问句与问答库中的问句相似度大于阈值时,才输出相应的问句所对应的答案,这里阈值是0.5。除此之外,本文对于阈值过滤后的答案,进行排序,先出阈值最高的前5个(Top5)反馈给用户。

        基于word2vec的句子相似度计算方法,在计算速度上比基于TF-IDF的方法速度快,因为word2vec训练出来的向量要更低维和稠密。但是由于在进行词向量训练的时候,使用的是sougou大语料,该语料与本文的问句没有太大的关系,故训练出来的词向量不能很好的代表问答领域问句的一些语义信息,故在最终进行测试的时候,计算出来的结果无法达到预期的效果。

     

     5 Summary and Outlook

        本文使用了两种句子向量化算法对句子进行向量化:即TF-IDF和word2vec。

        这两种向量化算法都能在一定程度上刻画出句子之间的相似度【余弦相似度】。

        对于TF-IDF算法,其训练出来的句子向量具有高维、稀疏的缺点,故在计算的时候比较慢,本文针对这个问题对其进行了优化,在一定程度上降低了时间复杂度。

        相反,对于word2vec算法,其训练出来的向量具有低维、稠密的优点,计算速度快,但词向量的训练需要大量的语料才能达到好的效果。这次训练语料比较不匹配,得到的向量不能很好地表示句子之间的相似性,效果较差。

        由此可见,在进行word2vec词向量的训练时,需要根据具体的问题,使用合适的语料,这样才能更好的表示句子之间的相似度。

    展开全文
  • 嵌入式面试常见问题

    千次阅读 2020-04-25 19:11:44
    1、什么是嵌入式 以应用为中心,以计算机技术为基础,软硬件可裁剪, 适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 2、字符设备和块设备的区别? Linux里设备类型分:字符设备、块...
  • 英文面试常见问题及回答汇总

    万次阅读 多人点赞 2018-09-18 12:18:52
    今天给大家奉上英文面试常见问题及回答的合集,英语面试主要就是学习如何用英语回答面试常见问题,英文面试常见问题说来说去其实重要的就那么几个,所以今天分享的英文面试常见问题及回答大家只要知道其套路,然后...
  • Jenkins常见问题及解决方案

    千次阅读 2018-12-11 17:16:32
    https://blog.csdn.net/weixin_37618127/article/details/79956956
  • C语言面试常见问题总结

    万次阅读 2020-09-13 23:39:43
    若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读...
  • React常见问题解决

    万次阅读 2020-02-25 08:40:41
    React常见问题解决 本文是基于Windows 10系统环境,学习和使用React: Windows 10 一、react常见问题解决方案 (1) 拼接字符串(常量+变量) const variable = 'department' const param1 = 'inspur' const param2...
  • C语言编程常见问题解答.pdf

    热门讨论 2010-01-06 15:19:27
    这是一本忖门解答C语言编程常见问题的著作。书中所覆盖的内容相当广泛,并附有大量鲜明的例子。
  • 服务器常见问题汇总(常见故障及相应的解决方法入口) 服务器支撑着整个企业的信息数据,对公司的信息储存、业务开展、正常运作等等环节都具有着至关重要的意义。然而,服务器在日常运行过程中,由于其复杂的硬件...
  • C语言常见问题总结

    千次阅读 2018-08-09 17:19:46
    对一个NULL指针进行解引用操作是非法的,引起的后果因编译器而异,两个常见的后果分别是返回内存位置零的值和终止程序。 5.在使用指针变量之前,需要对其显示的初始化,如果知道指针将被初始化为什么地址,就将他...
  • 测试工程师面试常见问题总结

    千次阅读 2019-09-30 15:26:27
    0 前言 ...三年内成为高级软件测试工程师,熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估。 附录 1、深入浅出:经典的软件测试用例方法总结 ...
  • UE4常见问题及解决方法

    千次阅读 2020-03-17 20:23:54
    1. 构建时显示光照构建失败 原因: 很多时候可能“Clearn Solution”整个UE4源码,而单独生成“UE4”项目源码,导致“Lightmass”模块未能编译。 解决方案: ...对UE4源码中“UnrealLightmass”模块重新编译。...
  • uni-app使用常见问题总结

    万次阅读 2019-07-15 10:42:01
    HBuilderX提示eslint-vue插件未安装 第一次使用HBuilderX的时候,每次保存文件都会提示eslint-vue插件未安装。 解决方案:菜单栏——工具——插件安装——eslint-plugin-vue卸载重新安装即可 ...
  • wireshark常见问题分析

    千次阅读 2018-04-13 17:57:32
    这里主要分析的是TCP协议,因为会涉及到重传、重组、乱序等常见问题。 常见 重复应答:TCP Dup ACK XXX#X 重复应答,一般是由于网络阻塞导致丢包,接收方告诉发送方重传某一个包,包的序号为#...
  • 软件项目管理的常见问题

    千次阅读 2018-08-08 14:26:34
    软件项目管理的常见问题 本文是《201 principles of software development》和《rapid development》关于项目管理部分的感悟。 一个产品或项目开发得很成功,你借鉴其方法确往往不会成功。但是别的项失败原因却...
  • js代码及要求如下: $(document).ready(function () { /* 鼠标移至“联系客服”,二级菜单以”slow“速度显示;当鼠标离开时,二 级菜单以“fast”速度隐藏 */ $(".menu-btn").hover( function () { ...
  • Rust 常见问题

    千次阅读 2019-09-26 17:24:44
    1.问题:Blockingwaitingforfilelockonpackagecache 原因:打开所在文件夹C:\Users\yourname\.cargo,导致.package_cache被加锁阻塞 解决方法:删除.package_cache文件
  • web开发常见问题整理

    千次阅读 2018-07-03 08:00:52
    This指向问题 1. 在方法中谁调用this就指向谁 ...在项目中this指向问题常见示例: 上面1: 因为在setInterval中要设置this.setState(),而此时的this已经指向window而不是class的this: ...
  • 算法工程师面试常见问题

    万次阅读 多人点赞 2018-03-11 11:45:53
    八九月份就要开始找工作了,一直期待能够成为一名算法工程师,所以在这里总结一下算法工程师常见问题。期待9月秋招时能有一个好的结果。本篇博客会一直更新下去。 编程语言 基本算法 传统机器学习 常见机器学习...
  • kafka常见问题汇总

    万次阅读 2017-08-23 15:25:33
    1、kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition 问题描述:kafka单台机器做集群操作是没有问题的,如果分布多台机器并且partitions或者备份的个数...
  • JMeter 常见问题总结

    万次阅读 2018-02-08 11:46:39
    最近才开始学习JMeter压测,其中碰到的问题,以及解决办法~~(有不对的地方,请喷~,多多赐教)PS:问题7、8还有待解决,各位大神路过的时候,了解的希望可以留下一点建议,跪谢~~~JMeter 常见问题总结:1.JMeter的...
  • 安装proteus8.0常见问题解决办法

    万次阅读 2018-03-16 21:50:21
    在win10系统,安装proteus8.0的破解版时,按网上教程装常会出现问题问题如下:出现该类问题可以按如下方法解决:在点击next后出现如下界面,在该界面选择第二个选项。随后的过程按一般教程执行即可安装成功。在...
  • OUTLOOK常见问题及其解决方法汇总

    千次阅读 2019-09-22 13:44:53
    1.无法启动Microsoft Office Outlook。无法打开Outlook窗口。无法代开此文件夹合集。无法打开信息存储区。 导致原因: 非法关机或打开OUTLOOK情况下突然断网导致ost文件配置丢失 ...修复方法:重新设置ost文件 ...
  • Web前端常见问题汇总

    千次阅读 2017-10-10 22:28:43
    1.get 和post的区别  数据传输大小:get 传输数据大小限制在1KB,post传输数据大小没有严格限制  缓存和安全:get请求某个url,数据追加到url中发送(http的header传送),即浏览器将各个表单字段元素及其数据... pos
  • 从本文开始,给出指针常见问题解答,并且会不时的更新!
  • 常见问题一: 统一性不要在软件中使用中英文混合的提示,比如对于用户的操作提示,不要一会用“error”一会用“错误”;一会用“succeed”另一会用“成功”总之要统一。某局长使用心得:删除的时候提示Error,幸亏我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,678,523
精华内容 671,409
关键字:

常见问题