Я создаю простой текстовый сумматор, используя HTML, CSS и Flask. Это простое веб-приложение, которое я пытаюсь создать, оно должно давать сводку при загрузке файла .txt, но я получаю внутреннюю ошибку сервера в flask и index.html (когда я нажимаю кнопку суммирования). Я получаю Ошибка "Сводка не получена".
Я что-то упустил? Может ли кто-нибудь устранить эту ошибку?
--Это код index.html--
import nltk
from nltk.corpus import stopwords
from nltk.cluster.util import cosine_distance
import numpy as np
import networkx as nx
from flask import Flask, request, jsonify,render_template
import json
from flask_cors import CORS
app = Flask(__name__)
def read_article(file_name):
file = open(file_name, "r")
filedata = file.readlines()
article = filedata[0].split(". ")
sentences = []
for sentence in article:
print(sentence)
sentences.append(sentence.replace("[^a-zA-Z]", " ").split(" "))
#sentences.pop()
return sentences
def sentence_similarity(sent1, sent2, stopwords=None):
if stopwords is None:
stopwords = []
sent1 = [w.lower() for w in sent1]
sent2 = [w.lower() for w in sent2]
all_words = list(set(sent1 + sent2))
vector1 = [0] * len(all_words)
vector2 = [0] * len(all_words)
# build the vector for the first sentence
for w in sent1:
if w in stopwords:
continue
vector1[all_words.index(w)] += 1
# build the vector for the second sentence
for w in sent2:
if w in stopwords:
continue
vector2[all_words.index(w)] += 1
return 1 - cosine_distance(vector1, vector2)
def build_similarity_matrix(sentences, stop_words):
# Create an empty similarity matrix
similarity_matrix = np.zeros((len(sentences), len(sentences)))
for idx1 in range(len(sentences)):
for idx2 in range(len(sentences)):
if idx1 == idx2: #ignore if both are same sentences
continue
similarity_matrix[idx1][idx2] = sentence_similarity(sentences[idx1], sentences[idx2], stop_words)
return similarity_matrix
def generate_summary(file_name, top_n=5):
nltk.download('stopwords')
stop_words = stopwords.words('english')
summarize_text = []
# Step 1 - Read text and split it
sentences = read_article(file_name)
# Step 2 - Generate Similarity Matrix across sentences
sentence_similarity_matrix = build_similarity_matrix(sentences, stop_words)
# Step 3 - Rank sentences in similarity matrix
sentence_similarity_graph = nx.from_numpy_array(sentence_similarity_matrix)
scores = nx.pagerank(sentence_similarity_graph)
# Step 4 - Sort the rank and pick top sentences
ranked_sentence = sorted(((scores[i],s) for i,s in enumerate(sentences)), reverse=True)
for i in range(top_n):
summarize_text.append(" ".join(ranked_sentence[i][1]))
return summarize_text
def read_json_file(file_path):
with open(file_path, 'r') as file:
json_content = json.load(file)
return json_content
@app.route('/')
def index():
return render_template('index.html')
@app.route('/render', methods=['POST'])
def render_json_file():
try:
file = request.files['file']
if file and file.filename.endswith('.txt'):
# Save the uploaded .txt file to the server
file_path = 'msft.txt'
file.save(file_path)
# Generate the summary using the updated function
summarized_content = generate_summary(file_path, top_n=2)
# Return the summary as JSON response
return jsonify(summarized_content), 200
else:
return 'Invalid file format. Please upload a .txt file.', 400
except Exception as e:
return str(e), 500
if __name__ == '__main__':
CORS(app)
app.run(debug=True)
Я пытался искать ошибки в журналах flask для обработки маршрутов, обработки загрузки файлов, CORS, обработки исключений и т. д.
Все выглядит нормально, но я все равно получаю ошибку, вот в терминале нет ошибок (нулевые ошибки в терминале), однако при нажатии на ссылку локального хоста фляги отображается внутренняя ошибка сервера 500, а когда выполняется index.html и загружается файл .txt и нажимается кнопка суммирования, это сводка не получена. Я не понимаю, где что-то пошло не так, поэтому кто-нибудь может помочь с этим.
Буду очень признателен за помощь.
Я создаю простой текстовый сумматор, используя HTML, CSS и Flask. Это простое веб-приложение, которое я пытаюсь создать, оно должно давать сводку при загрузке файла .txt, но я получаю внутреннюю ошибку сервера в flask и index.html (когда я нажимаю кнопку суммирования). Я получаю Ошибка "Сводка не получена". Я что-то упустил? Может ли кто-нибудь устранить эту ошибку? --Это код index.html-- [code]
if (!file) { alert('Please select a .txt file.'); return; }
const formData = new FormData(); formData.append('file', file);
fetch('http://127.0.0.1:5000/render', { // Corrected the fetch URL here method: 'POST', body: formData }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { // Display the summarized content on the page const summaryContainer = document.getElementById('summary-container'); summaryContainer.innerHTML = 'Summary: ' + data + ' '; for (const sentence of data) { const paragraph = document.createElement('p'); paragraph.textContent = sentence; summaryContainer.appendChild(paragraph); } }) .catch(error => { console.error('Error fetching the summary:', error); alert('An error occurred while fetching the summary. Please try again.'); }); });
[/code] --Это код колбы-- [code] import nltk from nltk.corpus import stopwords from nltk.cluster.util import cosine_distance import numpy as np import networkx as nx from flask import Flask, request, jsonify,render_template import json from flask_cors import CORS app = Flask(__name__)
for idx1 in range(len(sentences)): for idx2 in range(len(sentences)): if idx1 == idx2: #ignore if both are same sentences continue similarity_matrix[idx1][idx2] = sentence_similarity(sentences[idx1], sentences[idx2], stop_words)
# Step 4 - Sort the rank and pick top sentences ranked_sentence = sorted(((scores[i],s) for i,s in enumerate(sentences)), reverse=True)
for i in range(top_n): summarize_text.append(" ".join(ranked_sentence[i][1]))
return summarize_text
def read_json_file(file_path): with open(file_path, 'r') as file: json_content = json.load(file) return json_content @app.route('/') def index(): return render_template('index.html')
@app.route('/render', methods=['POST']) def render_json_file(): try: file = request.files['file'] if file and file.filename.endswith('.txt'): # Save the uploaded .txt file to the server file_path = 'msft.txt' file.save(file_path)
# Generate the summary using the updated function summarized_content = generate_summary(file_path, top_n=2)
# Return the summary as JSON response return jsonify(summarized_content), 200 else: return 'Invalid file format. Please upload a .txt file.', 400 except Exception as e: return str(e), 500
if __name__ == '__main__': CORS(app) app.run(debug=True) [/code] Я пытался искать ошибки в журналах flask для обработки маршрутов, обработки загрузки файлов, CORS, обработки исключений и т. д. Все выглядит нормально, но я все равно получаю ошибку, вот в терминале нет ошибок (нулевые ошибки в терминале), однако при нажатии на ссылку локального хоста фляги отображается внутренняя ошибка сервера 500, а когда выполняется index.html и загружается файл .txt и нажимается кнопка суммирования, это сводка не получена. Я не понимаю, где что-то пошло не так, поэтому кто-нибудь может помочь с этим. Буду очень признателен за помощь.
Я создаю простой текстовый сумматор, используя HTML, CSS и Flask. Это простое веб-приложение, которое я пытаюсь создать, оно должно давать сводку при загрузке файла .txt, но я получаю внутреннюю ошибку сервера в flask и index.html (когда я нажимаю...
У меня плохая идея передать 500 Internal Server Error обратно в javascript-fetch, если что-то с обработкой было не так. Я также передаю сообщение об ошибке с помощью json_encode($data). Проблема в том, что я не получаю сообщение об ошибке в...