热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度AnyQ之二—基本使用和测试配置镜像结果

文章目录1基础使用2.无聊的尝试3验证保存的镜像运行容器情况3.2查看solr1基础使用继续跟着这个走:小白编译AnyQ-docker&linux[CentOs]

文章目录

  • 1 基础使用
  • 2. 无聊的尝试
  • 3 验证保存的镜像运行容器情况
    • 3.2 查看solr


1 基础使用

继续跟着这个走:

  • 小白编译AnyQ-docker&linux[CentOs]——AnyQ系列之一
    容器创建时使用的命令是:

docker run -itd --name centos-anyq -p 0.0.0.0:8888:8999 centos:centos7
# 这句话其实有问题,把容器放到后台执行了
docker exec -it centos-anyq /bin/bash
# 把容器放回到前台

demo查看

# 获取anyq定制solr,anyq示例配置
cp ../tools/anyq_deps.sh .
sh anyq_deps.sh # 这步是下载一个model# 启动solr, 依赖python-json, jdk>=1.8
cp ../tools/solr -rp solr_script
sh solr_script/anyq_solr.sh solr_script/sample_docs
# 如果没有java 这句会报错 可以按照上面的安装再走一次
java -version
> java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)#运行
./run_server# 退出记得 ctrl+Z 不要直接关掉,不然端口会被占用

如果重新进入docker 记得切换到build目录

cd /home/AnyQ-master/build/# 如果端口不幸被占用 查看容器内的端口
netstat -tnlp | grep 8999
# yum install net-tools
> tcp 0 0 0.0.0.0:8999 0.0.0.0:* LISTEN 111723/./run_server > lsof -i:8999
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
run_serve 111723 root 3u IPv4 23682314 0t0 TCP *:bctp (LISTEN)
run_serve 111723 root 9u IPv4 30077501 0t0 TCP a14447576c14:bctp->192.168.30.159:11545 (ESTABLISHED)

在这里插入图片描述
运行之后,访问自己的服务器ip:8888就可以看到:
在这里插入图片描述
或者可以 服务器ip:8888/anyq?question=使用什么帐号? 。 不过我返回的东西很奇怪。。
在这里插入图片描述
似乎编码有些问题。然后反应过来可以在控制台查看啊,浏览器的开发者工具。(但是我不太会,但是我知道人家这个是任务台搞出来的。)
在这里插入图片描述
但是后台log信息就很棒咧
在这里插入图片描述
或者容器内调用 curl "127.0.0.1:8999/anyq?question=需要使用什么账号登录"

也可以多尝试尝试其他的例子,比如:
在这里插入图片描述
仔细查看输出,可以发现,anyQ的大致步骤

  1. 以某种方式找到与query相关的FAQ集合中的候选问题,candidate query。从输出的log提示中,可以知道使用的是simnet_paddle_sim.cpp这个文件,可以点击这里了解这个文件

    SimNet是百度自然语言处理部于2013年自主研发的语义匹配框架,该框架在百度各产品上广泛应用,主要包括BOW、CNN、RNN、MM-DNN等核心网络结构形式,同时基于该框架也集成了学术界主流的语义匹配模型,如MatchPyramid、MV-LSTM、K-NRM等模型。SimNet使用PaddleFluid和Tensorflow实现,可方便实现模型扩展。使用SimNet构建出的模型可以便捷的加入AnyQ系统中,增强AnyQ系统的语义匹配能力

  2. 计算这些候选问题的jaccard,使用的是jaccard_sim.cpp这个文件,可以点击这里查看详细情况,其实这个文件挺简单的,就是jaccard相似度,Python里调一行的事情,换成c++加速了。

    Jaccard index , 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。

  3. 将候选结果排序,找出最后选定的那个候选query。主要使用这个rank_strategy.cpp文件,点击这里查看详细情况
  4. 返回上面选定的query对应的回答,作为最终的回答。主要使用这个 anyq_strategy.cpp,点击这里查看文件详情。

也可以尝试其他的问题,比如:今日日期,但是没有返回值,所以自带的FAQ问答对集合非常有限。可能需要自己添加一些。
在这里插入图片描述

2. 无聊的尝试

从这个数据上猜测这个anyq是不是就是百度AI平台的人工客服,试了一下,应该不是。
在这里插入图片描述
找了一下,这个anyq的数据来自solr/sample_docs
在这里插入图片描述
所以接下来就是尝试加入自己的数据进行尝试了。

  • https://blog.csdn.net/u011818766/article/details/104117469
  • https://www.jianshu.com/p/0647b27b9284
  • https://blog.csdn.net/weixin_37792714/article/details/103984292

3 验证保存的镜像运行容器情况

之前保存过镜像了,刚好试一把,

参考

  • AnyQ如何配置solr动态读取数据库——AnyQ系列之二
  • Solr的基本使用

注意:

  • 这里8999端口是 anyq问答的端口
  • 如果要查看solr,solr的webapp页面端口是8900
  • 所以启动容器的时候,要么写两个接口映射,要么就是不使用默认的bridge模式,直接使用host模式。
    • 关于这两个模式,参考:docker的四种网络模式(Bridge、Host、Container、None 网络模式),自定义网络(创建自定义网桥、使两个不同网桥的容器通信、跨主机容器容器通讯等)
    • bridge是默认的,要通过特定规则(比如指定端口映射)完成容器和外接的通信
    • host是需要--network=host来指定的,host模式下的容器直接使用宿主机的 IP 地址与外界进行通信。
  • 这里可以使用多个端口映射的方式:

    docker run
    --name definedName(自定义容器名称)
    -p 8080:8080(端口映射 本机端口: docker端口 )
    -p 8081:8081
    -p ....
    -d imagesName(镜像名称)

实际使用以下代码:

# -p -p ip:hostPort:containerPort
# -p 8888:8999 这里多个端口映射 其中 solr端口 本机和容器端口号用了一样的
docker run -itd --name anyq-faq -p 0.0.0.0:8886:8999 -p 0.0.0.0:8900:8900 anyq/base # 如果不小心创建失败,提示容器名称被占用 可以
docker stop anyq-self
# 暂停容器
docker rm anyq-self
# 删除容器# 如果是端口名称被占用 要么换一个端口 要么找到占用端口的那个容器 删了docker exec -it anyq-self /bin/bash

这里注意,虽然基于的这个镜像是之前配好的容器保存的,但是java还是没有配置在系统路径中,所以每次重新开一个容器,都要重新配置一次java的系统路径

java -version
> bash: java: command not foundcd /home
##6.配置java环境
export PATH=`pwd`/jdk1.8.0_171/bin:$PATH> java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)# 这步可以不执行
cd AnyQ-master/build/
sh anyq_deps.sh # 这步是下载一个model# 这步需要执行,启动solr脚本,不然会报错
# AnyQ RAW: curl_easy_perform Failed[Couldn't connect to server];
sh solr_script/anyq_solr.sh solr_script/sample_docs# 然后运行服务
./run_server

然后就可以像之前一样正常启动,看看效果了。浏览器里输入:XXXX:8886/anyq?question=使用什么账号?
至此,保存为镜像,验证基于此镜像重新弄容器的步骤验证完成。

注意,如果先打开8900这个solr的端口,再去访问8886界面似乎会失败,先访问后者,再访问前者就没事。


3.2 查看solr

访问http://ip:8900/solr/这个链接,注意,这里不能只访问http://ip:8900,必须到后面的solr,不然会报错。
然后就会看到solr的这个简易的界面
在这里插入图片描述
要稍微了解一下这个solr,可以查看下面的solr简介部分。

ctrl+Z # 暂停当前的 run_serverjobs # 看一下这个被终止的run_server服务的后台序号
> [1]+ Stopped ./run_serverbg 1
# 放到后台继续运行 然后CLI就暂时空出来可以看其他东西了

在这里插入图片描述
找找这个目录,其实就在build目录下
在这里插入图片描述
查看一下这个目录,可以看到有以下内容
在这里插入图片描述
网上大部分其他关于solr的博客主要都会看一下这个example目录中solr目录,这里先看一下example目录(注意,以下内容皆为solr的示例,而不是anyq的数据)
在这里插入图片描述
再看一下solr目录
在这里插入图片描述
这就与什么是Solr,它能为我们解决什么问题,怎么用? 文章中示例的图一模一样了。里面出现了collection1这个文件夹
在这里插入图片描述
这里有16条文档,刚好和之前anyq测试时看到的那个数据集FAQ数量相同。仔细看一下collection文件夹的内容
在这里插入图片描述
其中那个core.properties配置文件里只有一行字:name=collection1。另外,data文件夹的结构如下,查看后,以下文件打开全都是乱码字符,找不到可以使用的内容。
在这里插入图片描述
conf配置文件夹中的conf/managed-schema.xml文件就是对数据库的模式描述,主键,还有样本的属性等等。

  • 参考:Solr【一】:初识Solr,其中有solr连接mysql的讲解。
    在这里插入图片描述
    与之类似的还有一个 conf/schema.xml.bak文件。
  • 参考:Solr的基本使用
    • 该配置文件是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldTypes、Fields和其他的一些缺省设置。
    • field:进行索引,需要创建document,document中包括 了很多的field(域)。
    • field属性:是否索引、是否存储、是否分词 ,是否多值multiValued
    • multiValued:该Field如果要存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图),通过使用solr查询要看出返回给客户端是数组:
    • Fieldtype:在solr中对每个Field都有一个Type类型。
    • 在Solr中进行索引、搜索时需要用哪些field需要提前在schema.xml文件中定义!!!!

另外,可以看一下这个和collections同级的solr.xml配置文件

<solr><solrcloud><str name&#61;"host">${host:}str><int name&#61;"hostPort">${jetty.port:8983}int><str name&#61;"hostContext">${hostContext:solr}str><int name&#61;"zkClientTimeout">${zkClientTimeout:30000}int><bool name&#61;"genericCoreNodeNames">${genericCoreNodeNames:true}bool>solrcloud><shardHandlerFactory name&#61;"shardHandlerFactory"class&#61;"HttpShardHandlerFactory"><int name&#61;"socketTimeout">${socketTimeout:0}int><int name&#61;"connTimeout">${connTimeout:0}int>shardHandlerFactory>solr>


solr简介

  • 什么是Solr,它能为我们解决什么问题,怎么用? &#xff1a;这里也有solr配置中文分词的教程
  • Solr百度百科

简单来说&#xff1a;Solr是一个独立的企业级搜索应用服务器&#xff0c;它对外提供类似于Web-service的API接口。用户可以通过http请求&#xff0c;向搜索引擎服务器提交一定格式的XML文件&#xff0c;生成索引&#xff1b;也可以通过Http Get操作提出查找请求&#xff0c;并得到XML格式的返回结果。
Solr是一个可扩展的&#xff0c;可部署&#xff0c;搜索/存储引擎&#xff0c;优化搜索大量以文本为中心的数据。

和数据库的区别&#xff1a;

  1. solr本身也可以看成数据库,(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜搜的部分交给solr,就像我们在京东首页所看到的商品信息,并不是来自数据库,而是来源于sorl的索引库
  2. 数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让供专业的solr来做搜索功能


无意义的尝试

********无意义的尝试 可以不加privileged这个参数的 ********
********按照以前的方式创建就没问题 那个博主写的有问题********
docker run -it --name&#61;anyq-self --ipc&#61;host -p 8886:8999 --privileged&#61;true anyq/base /usr/sbin/init
> [FAILED] Failed to start LSB: Bring up/down networking.
See &#39;systemctl status network.service&#39; for details.
# 使用上句报错了 不加--network&#61;host 就会报错。> docker run -itd --name&#61;anyq-faq -p 0.0.0.0:8886:8999 --privileged&#61;true --network&#61;host anyq/base /usr/sbin/init
WARNING: Published ports are discarded when using host network mode
# 但是这里使用--network&#61;host 虽然docker run -itd --name&#61;anyq-host --privileged&#61;true --network&#61;host anyq-host /usr/sbin/init
docker run -itd --name centos-anyq -p 0.0.0.0:8888:8999 centos:centos7

  • 使用--privileged&#61;true/usr/sbin/init参数确保在容器中可以用systemctl命令&#xff0c;关于这个systemctl命令&#xff0c;参考&#xff1a;Systemd 入门教程&#xff1a;命令篇

    • 不然会报错&#xff1a;

    [FAILED] Failed to start LSB: Bring up/down networking.
    See ‘systemctl status network.service’ for details.

    • 错误解决&#xff1a;stack obverflow:Docker service start failed
    • centos:7 container failed to start with /usr/sbin/init after update 12/16/2015 #39
    • 而且目前看下来&#xff0c;似乎只有centos这个linux发行版会有这个问题&#xff0c;ubuntu好像没有。
  • 关于警告信息&#xff1a;

    • 参考: WARNING: Published ports are discarded when using host network mode 解决方法

推荐阅读
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • Shell脚本编译器的全面解析与应用指南 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
author-avatar
平凡无琦世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有