-1

我已经成功实施了推荐引擎,但是如果我将任何不相关的值仍然给出输出,则必须显示“您输入了错误的值”

这是输出 正确的微笑输出

如果我输入了错误的微笑或任何不属于训练数据集的内容,那么必须给它一个消息,请输入正确的微笑。

错误的输出

我输入了任何随机文本,所以如果我输入错误的微笑,结果一定是

结果:“请输入正确的微笑”

我正在输入我的代码,我尝试如果其他但不工作。

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')

请帮助我正确的逻辑这里目标变量是微笑和反应物变量是建议。

4

1 回答 1

0

您可以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
于 2020-05-12T17:16:42.817 回答