Go to file
luhuibo 6c0f0bb72d 【新增】使用setting文件判断是否处于开发/线上环境 2019-10-22 14:58:48 +08:00
APP 【新增】日志打印 2019-10-21 16:57:03 +08:00
conf 【新增】使用setting文件判断是否处于开发/线上环境 2019-10-22 14:58:48 +08:00
data 【新增】数据放在data/下,太大的设置不上传 2019-10-14 18:55:50 +08:00
static/images 【新增】测试home主页 2019-10-16 23:21:39 +08:00
templates 【新增】网页版本聊天机器人 2019-10-18 14:59:19 +08:00
.gitignore 【新增】使用setting文件判断是否处于开发/线上环境 2019-10-22 14:58:48 +08:00
LICENSE Initial commit 2019-10-13 23:30:48 +08:00
README.md 【新增】使用setting文件判断是否处于开发/线上环境 2019-10-22 14:58:48 +08:00
requirements.txt 【完善】python虚拟环境创建和其他说明 2019-10-18 17:19:43 +08:00
run.py 【新增】使用setting文件判断是否处于开发/线上环境 2019-10-22 14:58:48 +08:00
run.sh 【修改】gunicorn使用端口 2019-10-16 23:15:36 +08:00

README.md

Text-Auto-Summarization 文本自动摘要

Languages Build License Contributions

目前的摘要技术分为

  1. Extraction 抽取式
  2. Abstraction 生成式
> 目前Extraction抽取式的主要方法

>> - 基于统计:统计词频,位置等信息,计算句子权值,再简选取权值高的句子作为文摘,特点:简单易用,但对词句的使用大多仅停留在表面信息。

>> - 基于图模型构建拓扑结构图对词句进行排序。例如TextRank/LexRank。

>> - 基于潜在语义使用主题模型挖掘词句隐藏信息。例如采用LDAHMM。

>> - 基于线路规划:将摘要问题转为线路规划,求全局最优解。

>> 在python语言中用于文本摘要自动提取的库包括gooseSnowNLPTextTeasersumyTextRank等。

项目使用指南

git clone https://github.com/Valuebai/Text-Auto-Summarization.git

进入文件夹目录,使用下面的##Ptyhon创建虚拟环境 + ## Requirements 进行安装

服务器部署使用下面的## linux部署指南

项目效果

http://39.100.3.165:8188/TextSummarization/

Textrank 和 Pagerank

ipynb的地址

本地&线上同步推进(后续优化)

业务场景

本地与线上的 Swagger API 文档的接口的地址是不同的,但都依赖同一个配置文件 app\config\setting.py
而个人项目有着本地和线上同步,开发和测试同步的需求,会不断修改 app\config\setting.py 文件,无法用 .gitignore 做到忽略配置文件,本地和线上配置隔离的效果。

解决

本地线上 自动根据所处的环境(由 .gitignore 控制)不同,选择不同的配置文件。
那么, 本地 可以比 线上 多了 app/config/dev.py 文件; 基于该文件的存在与否,可以用 if else 控制 app/config/ 中配置输出。

Demo

  1. echo "/app/config/dev.py" >> .gitignore # 追加 Git 忽略提交配置到 .gitignore
  2. 新建 app/config/dev.py 文件

Blueprint分隔视图

当你的Flask项目膨胀到一定规模的时候 全部都写到主入口之中。 一定需要按照模块进行拆分。 Blueprint(蓝图)就是这个时候需要使用的东西。

from flask import current_app
# 在需要的地方
current_app.logger.info("simple page info...")

Ptyhon创建虚拟环境

方法一:自带命令

  1. 进入文件夹目录
  2. python -m venv -h 可查看帮助信息
  3. 下面的
Linux运行命令行
$ 创建默认环境python3 -m venv my_venv 
$ 创建指定环境python3.6 -m venv  my_venv,  python2 -m venv  my_venv(添加到系统环境变量中)
$ 激活环境:. my_venv/bin/activate  (. 或者 source )
$ 退出环境deactivate 

Windows系统运行cmd使用 "py" Python 启动器命令配合 "-m" 开关选项:
$ 创建环境py -3 -m venv my_venv (或者python -m venv my_venv)
$ 创建指定环境py -3.6 -m venv my_venv,  py -3.7 -m venv my_venv (添加到系统环境变量中)
$ 激活环境my_venv\Scripts\activate.bat
$ 退出环境deactivate

执行后,会在目录前方出现<my_venv>表明已进入虚拟环境

安装项目:
$ pip install -r requirements.txt

方法二Windows在PyCharm下创建虚拟环境

  1. 安装并激活PyCharm 这个请自行安装 官方地址:https://www.jetbrains.com/pycharm/

  2. 在PyCharm下创建虚拟环境 第一步点击New Project 第二步选择下图的New environment 第三步点击create即可 pycharm会为新创建的项目自动建立一个虚拟环境

方法三conda创建虚拟环境

anaconda中的常用操作

Linux下启动其终端命令行 $ source ~/anaconda3/bin/activate root $ anaconda-navigator

  • 创建虚拟环境conda create -n env_name python=3.6

  • 同时安装必要的包conda create -n env_name numpy matplotlib python=3.6

  • 激活虚拟环境

    • Linuxsource activate your_env_name(虚拟环境名称)
    • Windowsactivate your_env_name(虚拟环境名称)
  • 退出虚拟环境:

    • Linuxsource deactivate your_env_name(虚拟环境名称)
    • Windowsdeactivate your_env_name(虚拟环境名称)
  • 删除虚拟环境conda remove -n your_env_name(虚拟环境名称) --all

  • 删除包使用命令conda remove --name $your_env_name $package_name包名)

conda常用命令

  • 查看已安装的包conda list
  • 安装包conda install package_name(包名)
  • 查看当前存在的虚拟环境conda env list 或 conda info -e
  • 检查更新当前condaconda update conda

Requirements

  • 生成指南:
  • 第一步:安装包 pip install pipreqs
  • 第二步在对应路径cmd输入命令生成 requirements.txt文件pipreqs ./ --encoding=utf8 --force 避免中文路径报错
  • 第三步下载该代码后直接pip install -r requirements.txt
  • 或者创建虚拟环境安装

linux部署指南

1. linux sh & nohup后台运行python脚本

      - nohup : 就是不挂起的意思( no hang up),可以在你退出帐户之后继续运行相应的进程
        - 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时)作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。
      - python3 -u  run.py : 执行py文件
      - -u的意思就是 uninterrupt不中断的意思如果你的代码里边有sleep等线程沉睡相关的操作如果你不-u的话 在后台 它就停住了
      - > nohup.log : 重定向保存日志到当前路径下的nohup.log
      - 2>&1 : 将标准出错也输出到nohup.log文件中
      - & : 最后一个& 是让该命令在后台执行。

2. 使用gunicorn 部署flask服务 (个人项目推荐使用这个)

  • 1创建脚本vim gunicorn.sh

  • 2填写内容并保存

    • conda activate just_do_it 在linux上创建好自己的环境可选
    • nohup gunicorn -w 4 -b 0.0.0.0:8001 run:app & (不带日志)
    • nohup gunicorn -w 4 -b 0.0.0.0:8001 run:app > gunicorn.log 2>&1 & (带日志)
  • 3运行sh gunicorn.sh 或者 . gunicorn.sh

需要提前pip install gunicorn
简单地gunicorn可以通过gunicorn -w 4 -b 0.0.0.0:8001 run:app启动一个Flask应用。其中,

-w 4是指预定义的工作进程数为4
-b 127.0.0.1:4000指绑定地址和端口
run是flask的启动python文件app则是flask应用程序实例

其中run.py中文件的可能形式是
# run.py
from flask import Flask
app = Flask(__name__)

参考文章:
gunicorn部署Flask服务 https://www.jianshu.com/p/fecf15ad0c9a
https://www.cnblogs.com/gaidy/p/9784919.html

3. 使用screen命令部署

  • 第一步screen -S yourname新建一个叫yourname的session
  • 第二步python run.py运行代码关闭shell连接后还会一直在linux上跑
  • 针对用户量小的情况,快速部署(本次使用这个)
  • 关于screen详情见https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
    杀死所有命令的ps aux|grep 你的进程名|grep -v grep | awk '{print $2}'|xargs kill -9
    
    https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux

4. 使用flask + nginx + uwsgi (不建议因Flask 与 uWsgi 结合有许多难以处理的 bug)

5. 使用flask + nginx + gunicorn (大项目推荐使用这个)

  • 生产环境很多大公司采用这个方式的,故推荐这个
  • 因Flask 与 uWsgi 结合有许多难以处理的 bug故推荐这个
  • Flask + Gunicorn + Nginx 部署

linux上杀死gunicorn的进程

方法一

  1. netstat -nltp | grep 8188 能看到类似下面的: tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 23422/gunicorn: mas

  2. kill -9 23422换成你的

方法二

  1. 获取Gunicorn进程树
pstree -ap|grep gunicorn

得到的结果如下

Python
| | |-grep,14519 --color=auto gunicorn
| -gunicorn,28097 /usr/local/bin/gunicorn query_site.wsgi:application -c ... 
| |-gunicorn,14226 /usr/local/bin/gunicorn query_site.wsgi:application -c ... 
| | |-{gunicorn},14229 
| | |-{gunicorn},14230 
...

  1. 重启Gunicorn任务

kill -HUP 14226

  1. 退出Gunicorn任务

kill -9 28097

linux根据端口号查找项目路径方法

只知道端口号

  1. 首先根据端口号查找进程
netstat -nltp
或者
netstat -nltp | grep python
或者
netstat -apn |grep 10010
  1. 然后根据进程号去查找项目路径
ps -ef |grep 8567
  1. 如果你第二步没有找到项目路径的话,尝试用
lsof -p 8567

如果知道项目部署在tomcat里

如果你的项目在linux 中是部署到tomcat容器里可以输入下边的命令找到如下:

ps anx|grep tomcat

Flask 快速完成前端页面

无法加载js, css等路径加载问题在pycharm里面../ 没有报错实际部署后404

解决:将../ 改为 ./ 因为是在text_blueprint.py文件启动的python是动态加载默认了此时的路径是text_blueprint.py的用../会找不到对应的static

引申在pycharm用../ 这种返回上一级的方法去单独执行一个文件在pycharm里面是正常的但是在windows命令行或者linux的部署中是从run.py启动的往往会出现这种情况

参考的页面

主页UI不好看但是具体提取页面和生成树形图学习了

有言论提取,文章摘要,情感分析

D3.js (Data-Driven Documents) 数据可视化

D3 的全称是Data-Driven Documents顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象说简单一点其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可视化的