Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import tensorflow as tf | |
| import logging | |
| def find_path(url): | |
| if url == '': | |
| return '' | |
| url = url.replace("-/-", "-") | |
| url_split = url.replace("https://", "") | |
| url_split = url_split.replace("www.", "") | |
| url_split = url_split.strip() | |
| url = url.replace("//", "/") | |
| url = url.replace("https/timesofindia-indiatimes-com", "") | |
| url_split = url_split.split("/") | |
| url_split = [u for u in url_split if (u != "") and | |
| (u != "articleshow") and | |
| (u.find(".cms")==-1) and | |
| (u.find(".ece")==-1) and | |
| (u.find(".htm")==-1) and | |
| (len(u.split('-')) <= 5) and | |
| (u.find(" ") == -1) | |
| ] | |
| if len(url_split) > 2: | |
| url_split = "/".join(url_split[1:]) | |
| else: | |
| if len(url_split) > 0: | |
| url_split = url_split[-1] | |
| else: | |
| url_split = '-' | |
| return url_split | |
| async def parse_prediction(tflite_pred, label_encoder): | |
| tflite_pred_argmax = np.argmax(tflite_pred, axis=1) | |
| tflite_pred_label = label_encoder.inverse_transform(tflite_pred_argmax) | |
| tflite_pred_prob = np.max(tflite_pred, axis=1) | |
| return tflite_pred_label, tflite_pred_prob | |
| async def model_inference(text: list, calibrated_model, label_encoder): | |
| logging.info('Entering news_classifier.model_inference()') | |
| logging.info(f'Samples to predict: {len(text)}') | |
| if text != "": | |
| tflite_pred = calibrated_model.predict_proba(text) | |
| tflite_pred = await parse_prediction(tflite_pred, label_encoder) | |
| logging.info('Exiting news_classifier.model_inference()') | |
| return tflite_pred | |
| async def predict_news_classes(urls: list, texts: list, calibrated_model, label_encoder): | |
| url_paths = [*map(find_path, urls)] | |
| paths_texts = [f"{p}. {t}" for p, t in zip(url_paths, texts)] | |
| label, prob = await model_inference(paths_texts, calibrated_model, label_encoder) | |
| return label, prob | |