import os import csv import json import requests import re as r import gradio as gr import pandas as pd from transformers import pipeline from urllib.request import urlopen from huggingface_hub import Repository HF_TOKEN = os.environ.get("HF_TOKEN") DATASET_NAME = "huggingface_sentiment_analysis_dataset" DATASET_REPO_URL = f"https://huggingface.co/datasets/pragnakalp/{DATASET_NAME}" DATA_FILENAME = "hf_sentiment_logs.csv" DATA_FILE = os.path.join("hf_sentiment_logs", DATA_FILENAME) DATASET_REPO_ID = "pragnakalp/huggingface_sentiment_analysis_dataset" print("is none?", HF_TOKEN is None) input_para = "I am happy\nI am sad\nI am not feeling well\nHe is a very good person\nHe is bad person\nI love pineapple\nI hate mangoes" try: hf_hub_download( repo_id=DATASET_REPO_ID, filename=DATA_FILENAME, cache_dir=DATA_DIRNAME, force_filename=DATA_FILENAME ) except: print("file not found") repo = Repository( local_dir="hf_sentiment_logs", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN ) def getIP(): d = str(urlopen('http://checkip.dyndns.com/') .read()) return r.compile(r'Address: (\d+\.\d+\.\d+\.\d+)').search(d).group(1) def get_location(ip_addr): ip=ip_addr req_data={ "ip":ip, "token":"pkml123" } url = "https://demos.pragnakalp.com/get-ip-location" # req_data=json.dumps(req_data) # print("req_data",req_data) headers = {'Content-Type': 'application/json'} response = requests.request("POST", url, headers=headers, data=json.dumps(req_data)) response = response.json() print("response======>>",response) return response def huggingface_result_page(paragraph): if paragraph.strip(): model_base = pipeline('sentiment-analysis') sen_list = paragraph sen_list = sen_list.split('\n') sen_list_temp = sen_list[0:] results = [] temp_result_dict = [] for sen in sen_list_temp: sen = sen.strip() if sen: cur_result = model_base(sen)[0] temp_result_dict.append(sen) results.append(cur_result['label']) result = { 'Input': sen_list, 'Sentiment': results } print("LENGTH of results ====> ",str(len(results))) print("LENGTH of sen_list ====> ",str(len(temp_result_dict))) save_data_and_sendmail(sen_list,results,result,paragraph) return pd.DataFrame(result) else: raise gr.Error("Please enter text in inputbox!!!!") def save_data_and_sendmail(sen_list,results,result,paragraph): try: print("welcome") ip_address = '' ip_address= getIP() print(ip_address) location = get_location(ip_address) print(location) add_csv = [paragraph,result,ip_address,location] with open(DATA_FILE, "a") as f: writer = csv.writer(f) # write the data writer.writerow(add_csv) commit_url = repo.push_to_hub() print("commit data :",commit_url) # url = 'https://pragnakalpdev35.pythonanywhere.com/HF_space_que_gen' # # url = 'http://pragnakalpdev33.pythonanywhere.com/HF_space_question_generator' # myobj = {'article': article,'total_que': num_que,'gen_que':result,'ip_addr':hostname.get("ip_addr",""),'host':hostname.get("host","")} # x = requests.post(url, json = myobj) url = 'https://pragnakalpdev33.pythonanywhere.com/HF_space_sentiment' myobj = {'para': sen_list,'result':results,'ip_addr':ip_address,"location":location} x = requests.post(url, json = myobj) return "Successfully save data" except Exception as e: print("error") return "Error while sending mail" + str(e) inputs = gr.Textbox(lines=3, label="Paragraph",value=input_para) outputs = gr.Dataframe(row_count = (3, "dynamic"), col_count=(2, "fixed"), label="Here is the Result", headers=["Input","Sentiment"],wrap=True) demo = gr.Interface( huggingface_result_page, inputs, outputs, title="Huggingface Sentiment Analysis", css=".gradio-container {background-color: lightgray}", article = """Provide us your feedback on this demo and feel free to contact us at letstalk@pragnakalp.com if you want to have your own sentiment analysis system. We will be happy to serve you for your sentiment analysis requirement. And don't forget to check out more interesting NLP services we are offering.
Developed by : Pragnakalp Techlabs
""" ) demo.launch()