-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
91 lines (61 loc) · 2.2 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from flask import Flask, request, jsonify
import chromadb
from SonarEmbeddingFunction import SonarEmbeddingFunction
from rss_nlp import RSSNLP
from flask_cors import CORS
import json
print("Starting the Flask server...")
print("Initializing the SonarEmbeddingFunction...")
embedding_func = SonarEmbeddingFunction()
print("Creating the ChromaDB collection...")
CHROMA_DATA_PATH = "chroma_data/"
COLLECTION_NAME = "news_articles"
client = chromadb.PersistentClient(path=CHROMA_DATA_PATH)
print("Initializing the RSSNLP...")
rss_nlp = RSSNLP()
app = Flask(__name__)
CORS(app)
@app.route("/process", methods=["POST"])
def process_data():
data = request.json
print(data)
result = data_processing_function(data)
return jsonify(result)
def data_processing_function(data):
try:
client.delete_collection(COLLECTION_NAME)
print("ChromaDB collection deleted.")
except:
print("ChromaDB collection does not exist.")
client.create_collection(name=COLLECTION_NAME, embedding_function=embedding_func)
rss_nlp.rss_feeds = []
rss_nlp.articles = []
rss_nlp.rss_feeds = data["rssFeeds"]
rss_nlp.get_articles()
rss_nlp.get_articles_text()
rss_nlp.compute_sentiment()
rss_nlp.collection_add()
worldcloudpath = rss_nlp.word_cloud()
clusterpath = rss_nlp.generate_embedding_plot()
numArticles = len(rss_nlp.articles)
numSources = len(data["rssFeeds"])
selected_columns = rss_nlp.df[
["title", "link", "polarity", "subjectivity", "sentiment"]
]
average_polarity = rss_nlp.df["polarity"].mean()
average_subjectivity = rss_nlp.df["subjectivity"].mean()
data_dict = selected_columns.to_dict(orient="records")
returnData = {
"wordcloudpath": worldcloudpath,
"clusterpath": clusterpath,
"numSources": numSources,
"numArticles": numArticles,
"average_polarity": average_polarity,
"average_subjectivity": average_subjectivity,
"articles": data_dict
}
with open("output/data_output.json", "w") as json_file:
json.dump(returnData, json_file, indent=4)
return returnData
if __name__ == "__main__":
app.run(debug=True, use_reloader=False)