Spaces:
Runtime error
Runtime error
import gradio as gr | |
import joblib | |
import pickle | |
import numpy as np | |
from janome.tokenizer import Tokenizer | |
model = joblib.load('./doc2vec.pkl') | |
with open('document_vecs.pkl', 'rb') as f: | |
document_vecs = pickle.load(f) | |
with open('Title.pkl', 'rb') as f: | |
Title = pickle.load(f) | |
def sep_by_janome(text): | |
t = Tokenizer() | |
tokens = t.tokenize(text) | |
docs=[] | |
for token in tokens: | |
docs.append(token.surface) | |
return docs | |
def cos_calc(text): | |
tokens = sep_by_janome(text) | |
input_vec = model.infer_vector(tokens) | |
rank_size = 5 | |
v1 = np.linalg.norm(input_vec) | |
cos_sim = [] | |
for v2 in document_vecs: | |
cos_sim.append( np.dot(input_vec,v2)/(v1*np.linalg.norm(v2)) ) | |
doc_sort = np.argsort(np.array(cos_sim))[::-1] | |
cos_sort = sorted(cos_sim,reverse=True) | |
cos = [] | |
titles = [] | |
for i in range(rank_size): | |
cos.append(cos_sort[i]) | |
titles.append(Title[doc_sort[i]]) | |
rank_1 = f'{titles[0]} \nコサイン類似度:{cos[0]}' | |
rank_2 = f'{titles[1]} \nコサイン類似度:{cos[1]}' | |
rank_3 = f'{titles[2]} \nコサイン類似度:{cos[2]}' | |
rank_4 = f'{titles[3]} \nコサイン類似度:{cos[3]}' | |
rank_5 = f'{titles[4]} \nコサイン類似度:{cos[4]}' | |
return rank_1, rank_2, rank_3, rank_4, rank_5 | |
demo = gr.Interface(fn=cos_calc, | |
title="プログラミング参考書推薦アプリ", | |
inputs=gr.Textbox(label="検索ワード"), | |
outputs=[gr.Textbox(label='1位'), | |
gr.Textbox(label='2位'), | |
gr.Textbox(label='3位'), | |
gr.Textbox(label='4位'), | |
gr.Textbox(label='5位') | |
]) | |
demo.launch() |