knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

入力文章から、俳句 短歌を抽出する。WEB画面の追加 自然言語処理(8)

index:

概要

前の、 自然言語処理 で TF-IDF 関係となりますが、
俳句、短歌を機械学習させて、入力文章と、
類似文章を抽出する。web画面の作成となります。

・ 画面は、前回と同じ Bot UIライブラリを
使用しています。

f:id:knaka0209:20190317113548p:plain

環境

python 3.5.2
janome
sklearn
flask

コード

python3 です。

github.com

データセット

俳句の文章は、NHKさんのページを
参考させて頂きました。

http://www.n-gaku.jp/taikai/tanka/h30/index.html

・PDFのテキストを、エディタにコピーし
 excelに、入力して。CSV形式にして保存

処理など

train.py
pandas で、CSV読み込み、
TfidfVectorizer で、学習、pickle で、保存して
flaskr/files/ に、配置

#
csv_data = pd.read_csv("flaskr/files/bun_data.csv" ,encoding="SHIFT-JIS" )
#print(csv_data.head() )

tokens=[]
for item in csv_data["bun"]:
    #print(item)
    token=get_token(item)
    tokens.append(token)
#print(len(csv_data.columns) )
#print(tokens )
#quit()

#print(tokens )
#quit()
docs = np.array(tokens)

vectorizer = TfidfVectorizer(use_idf=True, token_pattern=u'(?u)\\b\\w+\\b')
print(tokens)
#quit()
vecs = vectorizer.fit_transform(docs )
print("#vecs :")
print(vecs.shape )
##print(vecs[0] )

#save
file_name="params.pkl"
with open(file_name, 'wb') as f:
    pickle.dump(vectorizer, f)
print("#save vectorizer OK!")


views.py
入力文章を、評価して。
類似文章を抽出して、画面に出力

#
@app.route('/test3', methods=['GET', 'POST'])
def test3():
    print("#test3")
    ret="sorry, nothing response."
    if(len(request.form ) > 0):
        text=request.form['intext']
        print("text=",text ,"len=", len(text) )
        if(len(text) >0):
            ret=vect.predict(text )
        print  (ret)
    return ret