自然语言处理任务
任务来源:peng’s 毕设project
任务描述:一个问答聊天系统,前端输入聊天信息,交付给内置自然语言处理模型的后端服务器处理,并将处理结果交付给前端。
实现的条件:本机上Tomcat服务器,本机上FlaskServer服务器:pycharm专业版上运行。两个服务器运行在本机上,占用某些端口实现功能。
各部分功能:
Tomcat服务器:搭载前端的静态网页,当用户使用浏览器访问网页时将.html文件发送给用户的浏览器;将用户与前端交互的内容(如消息内容,HTTP信号)发送给后端服务器。
FlaskServer服务器:由pycharm导入的flask框架构建的极简服务器,占用了电脑上的三个端口来完成后端的处理任务。任务包括:前端打包的解析网页服务请求,交互数据信息;利用训练好的模型实现对信息的实体识别,关系提取等NLP特长;将处理得到的结果融合Neo4j数据库的知识图谱作为聊天的回答返回给前端界面。
Tomcat服务器介绍:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另 外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP 容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache 服务器。目前Tomcat最新版本为9.0。
Tomcat服务器配置:
烂大街了,默认8080端口是静态网页放置的端口,需要注意的是,需要由JAVA的运行环境,即Java JDK。Java JDK上链接:
https://blog.csdn.net/Fly_1213/article/details/101750887
需要用到Java 开发环境的原因是tomcat是用java写的,所以运行需要JRE,就是JAVA运行时刻环境,所以必须通过安装JDK来得到这个运行环境。Tomcat为什么要配置java jdk原文链接:
https://blog.csdn.net/qq_42257666/article/details/105700638
Tomcat的初始配置也几乎都是给Tomcat提供javaJDK的路径。这样就引出了更深层次的问题:为什么有的应用程序不需要配置,Tomcat则需要配置?
这是因为Windows版本的JDK安装以后会将安装的路径写入系统的注册表里边的。很多程序不用配置JAVA_HOME是因为那些程序是直接通过读取注册表里边的路径获取了JDK的路径,写到相应的配置文件中,比如Eclipse和Netbeans。
而Tomcat显然没有这样去处理,只是简单地通过环境变量去获取JDK的路径,所以要运行Tomcat一般都是要配置环境变量的。Tomcat这样做也是出于跨平台考虑的。因为系统注册表是只有Windows系统才有的,Linux系统是没有系统注册表的,所以为了跨平台性,Tomcat选择了需要手动配置环境变量。当有请求时,Tomcat会自动将jsp里面的java程序部分提取出来,调用JDK将java程序编译成class,然后再执行这个class。
Tomcat的使用与作用:
https://zhuanlan.zhihu.com/p/440916459
flaskServer介绍:
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于2个外部库: Jinja2 模板引擎和 WSGI工具集—Werkzeug , flask的使用特点是基本所有的工具使用都依赖于导入的形式去扩展,flask只保留了web开发的核心功能。
FlaskServer配置:
由于是搭载在pycharm上的,导入flask框架的.py文件直接运行(配置flask运行环境),或者直接建立flask项目都是可以运行起务器的。并且要设定本机的哪些端口给FlaskServer服务器使用。可以在代码中,也可以在运行配置中。
实现描述:
首先运行Tomcat bin文件夹下的startup.bat文件(如果添加到系统路径直接cmd输入startup运行),将已经设计好的前端静态页面运行在本机8080端口上,此时打开浏览器访问 http://localhost:8080/HistoryWeb/main.html 就可以看到如下的静态页面。
运行flask相当于启动了后端,聊天系统网页功能启动。在pycharm上用右上角的flask运行,而不用python解释器的运行,这里是由于flask实现后端监听函数的功能只需要路由函数,即@app.route(‘/ner’)下的函数,用flask运行时.py文件不会去运行if name == ‘main‘:下的主函数,而会直接运行路由函数。
之后就可以在前端输入text文本,前端服务器Tomcat将text文本和HTTP/kbqa请求发送给后端FlaskServer的5002端口,FlaskServer的5002端口上运行的kbqa.py程序监听到了HTTP/kbqa请求,便会运行.kbqa文件的对应路由函数,创建两个线程分别发送/ner,/ccr请求给另外两个端口。predict.py和server.py分别运行在这两个端口上监听请求,收到请求后分别执行实体识别和关系分类。联系Neo4j数据库中的知识图谱内容将回答语句处理完毕后发回前端从而实现聊天。
注意本例中FlaskServer服务器的程序监听5002端口,接收到前端的信息后,发送将NER(实体识别)和CRR(关系提取)的请求请求转发给Flask服务器的不同端口来处理文本。现实中服务器可以使用同一个端口处理不同的请求,但在本例中,FlaskServer服务器开放了两个端口监听不同的请求,而Flask服务器分别创建了5000和5001两个端口的线程来处理不同的请求,分别处理NER(实体识别)和CRR(关系提取)的请求,使用不同的端口的好处是可以更好地区分不同的请求,方便调试和管理。另外,使用不同的端口还可以允许不同的服务在同一台服务器上运行,避免端口冲突。