Как установить сообщение об ошибке, если оно не принадлежит набору обучающих данных? - PullRequest
0 голосов
/ 06 мая 2020

Я успешно внедрил механизм рекомендаций, но у меня проблема с этим, если я помещаю какое-либо несвязанное значение, все еще выдающее результат, должно быть показано, что «вы ввели неправильное значение»

Вот результат правильный вывод смайлов

Если я поставлю неправильные смайлы или что-то, что не принадлежит набору обучающих данных, тогда должно появиться сообщение, в котором необходимо ввести правильные смайлы.

Неверный вывод

Я ввел произвольный текст, поэтому, если я ввожу неправильные улыбки, должен получиться результат как

результат: «Пожалуйста, введите правильные улыбки»

Я помещаю свои code Я пробую Если еще, но не работает.

from rdkit import Chem
from rdkit.Chem import Draw

import pandas as pd
from flask import Flask, jsonify, request, abort
import json
import sys
import random
import unicodedata
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

data = pd.read_csv("clean_o2h.csv", sep=",")


app = Flask(__name__)

@app.route('/', methods=["POST"])



def predict_word():
    print(request.get_json())
    sent = request.get_json()['smiles']
    reactants = data["reactants"].tolist()
    targets = data["targets"].tolist()
    error = ("plese enter correct smiles") 

# TFIDF vector representation
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(targets)

    test = vectorizer.transform([sent])

#test = vectorizer.transform(["NC1=CC=C2C(COC(N[C@H]3C4=C(CC3)C=CC=C4)=N2)=C1"])

    cosine_similarities = cosine_similarity(test, X).flatten()
    l = []
   # n = ["Result 1","Result 2", "Result 3","Result 4"]

# Extract top 5 similarity records
    similarity = cosine_similarities.argsort()[:-5:-1]
     #print("Top 5 recommendations...")
    for sim in similarity:
    #print(reactants[sim])
       result = reactants[sim]
       l.append(result)
       print(l)

      # output = dict(zip(l,n))
       res = { i : l[i] for i in range(0, len(l) ) }



   # return  jsonify({"Recommendation": res})

    if(sent == targets):
      return jsonify({"Recommendation": res})
    else:
          return jsonify({"Error": error})




if __name__ == '__main__':
    app.run(port='8080')

Пожалуйста, помогите мне с правильным логом c здесь целевая переменная - это улыбки, а переменная реагентов - это рекомендация.

1 Ответ

0 голосов
/ 12 мая 2020

Вы можете проверить, действительны ли SMILES, проанализировав молекулу с помощью RDKit. Это должно ответить на часть вашего вопроса, но извините, я не понимаю, чего еще вы здесь пытаетесь достичь.

from rdkit import Chem

error = 'something is wrong'
smiles = request.get_json()['smiles']
m = Chem.MolFromSmiles(smiles)
if m is None:
    return jsonify({"Error": error})
else:
    # you have valid smiles
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...