У меня есть функция, которая возвращает мне вектор.
def class_vector(*categories):
all_categories = categories
model = Word2Vec.load(r"C:\Users\vector.model")
my_dict = dict({})
for idx, key in enumerate(model.wv.vocab):
my_dict[key] = model.wv[key]
categories_vectors = dict({})
for i in all_categories:
if i.lower() in my_dict.keys():
categories_vectors[i] = my_dict[i]
average_vector = np.mean(list(categories_vectors.values()), axis =0)
average_vector = average_vector.reshape(1, -1)
return average_vector
Теперь я вызываю эту функцию и тестирую векторы, сгенерированные для двух различных входных комбинаций:
test 1 = class_vector("apple", "banana")
test 2 = class_vector("grapes", "papaya", "lemon")
Это отлично работает и возвращает мне новый вектор для каждой новой комбинации фруктов. Вышеупомянутая функция находится в файле .py с именем vectors_list.py
Теперь я хочу создать api, который принимает имена фруктов в качестве входных данных от пользователя и использует функцию class_vector
для возврата вычисленных векторов.
Код API:
from flask import Flask, request
from vector_list import class_vector
app = Flask(__name__)
@app.route('/')
def status():
fruits = request.args.getlist("param")
str_fruits = ",".join(fruits)
returned_vec = class_vector(*str_fruits )
return str(returned_vec)
Теперь я делаю flask run
из cmd и запускаю несколько тестов
Test 1: `curl "http://localhost:5000?param=apple¶m=banana"`
Test 2: `curl "http://localhost:5000?param=grapes¶m=papaya¶m=lemon"`
Это возвращает мне тот же вектор для каждой новой комбинации фруктов который я отправляю как параметр для вызова api. Это неправильно, и я хочу понять, почему это происходит. Я неправильно вызываю функцию? Любые предложения