CoolFace
Apppublic

smf2010/forest

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
main.py63 linesDownload Raw Back to root
1from flask import Flask, render_template, request2import os3import jieba4from sklearn.feature_extraction.text import TfidfVectorizer5from sklearn.metrics.pairwise import cosine_similarity6 7app = Flask(__name__)8 9 10def load_sentences(text):11  return text.split("。")12 13 14def tokenize(sentences):15  tokenized_sentences = []16  for sentence in sentences:17    tokens = jieba.lcut(sentence)18    tokenized_sentences.append(" ".join(tokens))19  return tokenized_sentences20 21 22def tfidf_vectorize(tokenized_sentences):23  vectorizer = TfidfVectorizer()24  tfidf_matrix = vectorizer.fit_transform(tokenized_sentences)25  return tfidf_matrix, vectorizer26 27 28def cosine_similarity_score(query, tfidf_matrix, vectorizer):29  query_vector = vectorizer.transform([query])30  similarity_scores = cosine_similarity(query_vector, tfidf_matrix)31  return similarity_scores32 33 34@app.route('/', methods=['GET', 'POST'])35def index():36  if request.method == 'POST':37    query = request.form['query']38    text = request.form['text']39    sentences = load_sentences(text)40    tokenized_sentences = tokenize(sentences)41    tfidf_matrix, vectorizer = tfidf_vectorize(tokenized_sentences)42 43    query_tokens = jieba.lcut(query)44    query_tokens = " ".join(query_tokens)45 46    similarity_scores = cosine_similarity_score(query_tokens, tfidf_matrix,47                                                vectorizer)48    sorted_scores_indices = similarity_scores.argsort()[0][::-1]49 50    result = []51    for index in sorted_scores_indices:52      if similarity_scores[0][index] != 0.0:53        if similarity_scores[0][index] > 0.3:54          result.append((sentences[index], round(similarity_scores[0][index],55                                                 2)))56 57    return render_template('index.html', result=result)58  return render_template('index.html')59 60 61if __name__ == '__main__':62  app.run(host='0.0.0.0', port=7860)63