今回は文章要約プログラムを作ってみました。
サーバーはpythonのflaskを使います。
アルゴリズムは下の感じです。
1:検索ワードを指定する
(htmlのウェブブラウザ)
jump1268.hatenablog.com
2:そのワードについてgoogleで調べる
jump1268.hatenablog.com
3:上位サイトの内容を記憶。重要な文章をかき集めて、要約します。
文章要約ウェブプログラムを書いてみた。(モジュール側) - 永遠の20代
ウェブブラウザのイメージが下です
プログラムの詳細
@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("&")
これは検索ワードに入力した文字を受け取る時の処理です。
検索ワードに文字が入力されて検索するボタンを押すと
/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