エンジニア

なんくるないさ

「このブログはアフィリエイト広告を利用しています」

文章要約ウェブプログラムを書いてみた。サーバ側(python)

今回は文章要約プログラムを作ってみました。
サーバーはpythonのflaskを使います。

アルゴリズムは下の感じです。
1:検索ワードを指定する
(htmlのウェブブラウザ)
jump1268.hatenablog.com

2:そのワードについてgoogleで調べる
jump1268.hatenablog.com

3:上位サイトの内容を記憶。重要な文章をかき集めて、要約します。
文章要約ウェブプログラムを書いてみた。(モジュール側) - 永遠の20代



ウェブブラウザのイメージが下です

f:id:jump1268:20181229165450p:plain

プログラムの詳細

@app.route('/')
def index():
with open("index.html", "rb") as f:
return render_template('index.html')

これでtemplateというフォルダに保存してあるindex.htmlを読み込みます。




@app.route('/predict/',methods=['GET','POST'])
/predictにアクセスしてGET、POST通信をします。

def predict():
label = (request.get_data()).decode('utf-8')
name1,name2,name3 = label.split("&")

これは検索ワードに入力した文字を受け取る時の処理です。
f:id:jump1268:20190102192603p:plain
検索ワードに文字が入力されて検索するボタンを押すと
/predict
にPOST通信によりデータが下のように送信されます。

name1=○○&name2=○○&name3=○○

これを(request.get_data()).decode('utf-8')
name1,name2,name3 = label.split("&")とすることによって、

name1 = (name1=○○)
name2 = (name2=○○)
name3 = (name3=○○)

となります。



name1 = name1[6:]
name2 = name2[6:]
name3 = name3[6:]

これで=の後から6番目のデータを格納します。
つまり
name1=○○
name2=○○
name3=○○
て感じになります。



name1= urllib.parse.unquote(name1)
name2= urllib.parse.unquote(name2)
name3= urllib.parse.unquote(name3)

この処理をすることによって、文字化けを防ぎます。




print(name1,name2,name3)
name = name1 + name2 + name3

# 検索1,2,3、を連結してcheckの引数に
#戻り値はstr型の長い文章のはず
sentence = my_text.check(name)
sentence = jabstract._get_bocchan_text(sentence)
text = sentence
sentence = jabstract.summarize(sentence, char_limit=50, continuous=True)
return str(sentence)

name1,2,3を連結して、my_textのcheck関数に投げます。
これによって
検索ワードをgoogleで調べて、URLの中身を全部保存して、その内容を戻り値とします。

sentence = jabstract._get_bocchan_text(sentence)
text = sentence
sentence = jabstract.summarize(sentence, char_limit=50, continuous=True)
その内容を要約用のプログラムに投げます。






import urllib.parse
import json
from flask import request
from flask import Flask, render_template

#予測するpyプログラム
import my_text

import pandas as pd
import numpy as np
import serial
import datetime
import csv
import time
import matplotlib.pyplot as plt
import random
#scientific computing library for saving, reading, and resizing images
from scipy.misc import imsave, imread, imresize
import codecs

#for matrix math
import numpy as np
#for regular expressions, saves time dealing with string data
import re

#system level operations (like loading files)
import sys 

#jabsract.pyというpythonのプログラムを読み込む.
import jabstract

#initalize our flask app
app = Flask(__name__)




@app.route('/')
def index():
    with open("index.html", "rb") as f:
        return render_template('index.html')

@app.route('/predict/',methods=['GET','POST'])
def predict():

    label = (request.get_data()).decode('utf-8')
    name1,name2,name3 = label.split("&")
    name1 = name1[6:]
    name2 = name2[6:]
    name3 = name3[6:]

    name1= urllib.parse.unquote(name1)
    name2= urllib.parse.unquote(name2)
    name3= urllib.parse.unquote(name3)

    print(name1,name2,name3)
    name = name1 + name2 + name3 

    # 検索1,2,3、を連結してcheckの引数に
    #戻り値はstr型の長い文章のはず
    sentence = my_text.check(name)
    sentence = jabstract._get_bocchan_text(sentence)
    text = sentence
    sentence = jabstract.summarize(sentence, char_limit=50, continuous=True)
    return str(sentence)
    
    
if __name__ == "__main__":
    app.run(debug=True,port=8086)
    print("http://localhost:" + str(port))


html編は下です。
jump1268.hatenablog.com



jump1268.hatenablog.com