|
from bezinga_caller import bezinga_get |
|
from finub_caller import get_finhub |
|
from marketaux_caller import get_marketaux |
|
from newsapi_caller import get_newsapi |
|
from newsdata_caller import get_newsdata |
|
from vantage_caller import get_vantage |
|
from transformers import pipeline |
|
|
|
|
|
def get_articles_sentiment(ticker, model): |
|
pipe = pipeline("text-classification", model=model) |
|
|
|
|
|
try: |
|
bezinga_list = bezinga_get(ticker) |
|
print("BEZINGA returned") |
|
bezinga_results = pipe(bezinga_list) |
|
print("evaluated") |
|
except Exception as e: |
|
print(e) |
|
bezinga_results = [] |
|
|
|
try: |
|
newsapi_list = get_newsapi(ticker) |
|
print("NEWSAPI returned") |
|
newsapi_results = pipe(newsapi_list) |
|
print("evaluated") |
|
except Exception as e: |
|
print(e) |
|
newsapi_results = [] |
|
try: |
|
newsdata_list = get_newsdata(ticker) |
|
print("NEWSDATA returned") |
|
newsdata_results = pipe(newsdata_list) |
|
print("evaluated") |
|
except Exception as e: |
|
print(e) |
|
newsdata_results = [] |
|
|
|
try: |
|
finhub_list = get_finhub(ticker) |
|
print("FINHUB returned") |
|
finhub_results = pipe(finhub_list) |
|
print("evaluated") |
|
except Exception as e: |
|
print(e) |
|
finhub_results = [] |
|
|
|
try: |
|
vantage_list = get_vantage(ticker) |
|
print("VANTAGE returned") |
|
vantage_results = pipe(vantage_list) |
|
print("evaluated") |
|
except Exception as e: |
|
print(e) |
|
vantage_results = [] |
|
|
|
|
|
|
|
def replace_values(result): |
|
|
|
for dict in result: |
|
if dict["label"] == "LABEL_1": |
|
dict["label"] = 2 |
|
else: |
|
dict["label"] = 1 |
|
|
|
|
|
total_articles = len(bezinga_results) + len(finhub_results) + len(newsapi_results) + len(newsdata_results) + len(vantage_results) |
|
|
|
bezinga_positives = [] |
|
bezinga_negatives = [] |
|
|
|
finhub_positives = [] |
|
finhub_negatives = [] |
|
|
|
newsapi_positives = [] |
|
newsapi_negatives = [] |
|
|
|
newsdata_positives = [] |
|
newsdata_negatives = [] |
|
|
|
vantage_positives = [] |
|
vantage_negatives = [] |
|
|
|
try: |
|
replace_values(bezinga_results) |
|
|
|
bezinga_label_mean = float(sum(d['label'] for d in bezinga_results)) / len(bezinga_results) |
|
|
|
|
|
|
|
for dict in bezinga_results: |
|
if dict["label"] == 2: |
|
bezinga_positives.append(dict) |
|
else: |
|
bezinga_negatives.append(dict) |
|
|
|
if len(bezinga_positives) > 0: |
|
bezinga_positive_score_mean = float(sum(d['score'] for d in bezinga_positives)) / len(bezinga_positives) |
|
|
|
if len(bezinga_negatives) > 0: |
|
bezinga_negative_score_mean = float(sum(d['score'] for d in bezinga_negatives)) / len(bezinga_negatives) |
|
except Exception as e: |
|
print(e) |
|
|
|
|
|
if len(finhub_results) > 0: |
|
replace_values(finhub_results) |
|
|
|
finhub_label_mean = float(sum(d['label'] for d in finhub_results)) / len(finhub_results) |
|
|
|
|
|
|
|
for dict in finhub_results: |
|
if dict["label"] == 2: |
|
finhub_positives.append(dict) |
|
else: |
|
finhub_negatives.append(dict) |
|
|
|
if len(finhub_positives) > 0: |
|
finhub_positive_score_mean = float(sum(d['score'] for d in finhub_positives)) / len(finhub_positives) |
|
|
|
if len(finhub_negatives) > 0: |
|
finhub_negative_score_mean = float(sum(d['score'] for d in finhub_negatives)) / len(finhub_negatives) |
|
|
|
|
|
if len(newsapi_results) > 0: |
|
replace_values(newsapi_results) |
|
|
|
newsapi_label_mean = float(sum(d['label'] for d in newsapi_results) + 1) / (len(newsapi_results) + 2) |
|
|
|
for dict in newsapi_results: |
|
if dict["label"] == 2: |
|
newsapi_positives.append(dict) |
|
else: |
|
newsapi_negatives.append(dict) |
|
|
|
if len(newsapi_positives) > 0: |
|
newsapi_positive_score_mean = float(sum(d['score'] for d in newsapi_positives)) / len(newsapi_positives) |
|
|
|
if len(newsapi_negatives) > 0: |
|
newsapi_negative_score_mean = float(sum(d['score'] for d in newsapi_negatives)) / len(newsapi_negatives) |
|
|
|
|
|
|
|
if len(newsdata_results) > 0: |
|
replace_values(newsdata_results) |
|
|
|
newsdata_label_mean = float(sum(d['label'] for d in newsdata_results)) / len(newsdata_results) |
|
|
|
for dict in newsdata_results: |
|
if dict["label"] == 2: |
|
newsdata_positives.append(dict) |
|
else: |
|
newsdata_negatives.append(dict) |
|
|
|
if len(newsdata_positives) > 0: |
|
newsdata_positive_score_mean = float(sum(d['score'] for d in newsdata_positives)) / len(newsdata_positives) |
|
|
|
if len(newsdata_negatives) > 0: |
|
newsdata_negative_score_mean = float(sum(d['score'] for d in newsdata_negatives)) / len(newsdata_negatives) |
|
|
|
|
|
if len(vantage_results) > 0: |
|
replace_values(vantage_results) |
|
|
|
vantage_label_mean = float(sum(d['label'] for d in vantage_results)) / len(vantage_results) |
|
|
|
for dict in vantage_results: |
|
if dict["label"] == 2: |
|
vantage_positives.append(dict) |
|
else: |
|
vantage_negatives.append(dict) |
|
|
|
if len(vantage_positives) > 0: |
|
vantage_positive_score_mean = float(sum(d['score'] for d in vantage_positives)) / len(vantage_positives) |
|
|
|
if len(vantage_negatives) > 0: |
|
vantage_negative_score_mean = float(sum(d['score'] for d in vantage_negatives)) / len(vantage_negatives) |
|
|
|
total_positives = len(bezinga_positives) + len(finhub_positives) + len(newsapi_positives) + len(newsdata_positives) + len(vantage_positives) |
|
total_negatives = len(bezinga_negatives) + len(finhub_negatives) + len(newsapi_negatives) + len(newsdata_negatives) + len(vantage_negatives) |
|
|
|
results_dict = { |
|
"bezinga": { |
|
"bezinga_articles": len(bezinga_results), |
|
"bezinga_positives": len(bezinga_positives), |
|
"bezinga_negatives": len(bezinga_negatives), |
|
"bezinga_sentiment_mean": bezinga_label_mean if len(bezinga_results) > 0 else 0, |
|
"bezinga_positive_score_mean": bezinga_positive_score_mean if len(bezinga_results) > 0 else 0, |
|
"bezinga_negative_score_mean": bezinga_negative_score_mean if len(bezinga_results) > 0 else 0 |
|
}, |
|
"finhub": { |
|
"finhub_articles": len(finhub_results), |
|
"finhub_positives": len(finhub_positives), |
|
"finhub_negatives": len(finhub_negatives), |
|
"finhub_sentiment_mean": finhub_label_mean if len(finhub_results) > 0 else 0, |
|
"finhub_positive_score_mean": finhub_positive_score_mean if len(finhub_results) > 0 else 0, |
|
"finhub_negative_score_mean": finhub_negative_score_mean if len(finhub_results) > 0 else 0 |
|
}, |
|
"newsapi": { |
|
"newsapi_articles": len(newsapi_results), |
|
"newsapi_positives": len(newsapi_positives), |
|
"newsapi_negatives": len(newsapi_negatives), |
|
"newsapi_sentiment_mean": newsapi_label_mean if len(newsapi_results) > 0 else 0, |
|
"newsapi_positive_score_mean": newsapi_positive_score_mean if len(newsapi_results) > 0 else 0, |
|
"newsapi_negative_score_mean": newsapi_negative_score_mean if len(newsapi_results) > 0 else 0 |
|
}, |
|
"newsdata": { |
|
"newsdata_articles": len(newsdata_results), |
|
"newsdata_positives": len(newsdata_positives), |
|
"newsdata_negatives": len(newsdata_negatives), |
|
"newsdata_sentiment_mean": newsdata_label_mean if len(newsdata_results) > 0 else 0, |
|
"newsdata_positive_score_mean": newsdata_positive_score_mean if len(newsdata_results) > 0 else 0, |
|
"newsdata_negative_score_mean": newsdata_negative_score_mean if len(newsdata_results) > 0 else 0 |
|
}, |
|
"vantage": { |
|
"vantage_articles": len(vantage_results), |
|
"vantage_positives": len(vantage_positives), |
|
"vantage_negatives": len(vantage_negatives), |
|
"vantage_sentiment_mean": vantage_label_mean if len(vantage_results) > 0 else 0, |
|
"vantage_positive_score_mean": vantage_positive_score_mean if len(vantage_results) > 0 else 0, |
|
"vantage_negative_score_mean": vantage_negative_score_mean if len(vantage_results) > 0 else 0 |
|
}, |
|
"total_articles": total_articles, |
|
"total_positives": total_positives, |
|
"total_negatives": total_negatives |
|
} |
|
|
|
return results_dict |