import gradio as gr import tensorflow as tf from tensorflow.keras.models import load_model def split_char(text): return " ".join(list(text)) # Unzipping model import zipfile zip_ref = zipfile.ZipFile("Universal_sentence_encoder_Tribrid_embedding_model.zip", "r") zip_ref.extractall() zip_ref.close() from spacy.lang.en import English def make_predictions(Input): class_names=['BACKGROUND','CONCLUSIONS','METHODS','OBJECTIVE','RESULTS'] # setup English sentence parser nlp = English() # create & add sentence splitting pipeline object to sentence parser nlp.add_pipe('sentencizer') # create "doc" of parsed sequences doc=nlp(Input) # Create a list sents_list = [] for sent in doc.sents: sents_list.append(sent.text) abstract_sentences=sents_list # Creating a loop to go through each line in abstract and create a list of dictionaries containing festure for each lines sample_line=[] for i,line in enumerate(abstract_sentences): sample_dict={} sample_dict["text"]=str(line) sample_dict["line_number"]=i sample_dict["total_lines"]=len(abstract_sentences)-1 sample_line.append(sample_dict) # Get all the line_number values from sample abstract abstract_line_number=[line["line_number"] for line in sample_line] # one-hot encoding line_number values abstract_line_number_one_hot=tf.one_hot(abstract_line_number,depth=15) # Getting all total_number values from sample abstract abstract_total_lines=[line["total_lines"] for line in sample_line] # One-hot encoding total_number lines abstract_total_lines_one_hot=tf.one_hot(abstract_total_lines,depth=20) # Splitting abstract lines into character abstract_char=[split_char(sentence) for sentence in abstract_sentences] #abstract_char=[" ".join(list((sentence) for sentence in abstract_sentences))] # Loading in model and getting a summary of loaded model #skimlit_universal_sentence_encoder_model=tf.keras.models.load_model("/content/drive/MyDrive/skimlit_models/Universal_sentence_encoder_Tribrid_embedding_model") skimlit_model=load_model("Universal_sentence_encoder_Tribrid_embedding_model") # Making prediction with loaded model on sample abstract abstract_pred_probs=skimlit_model.predict(x=(abstract_line_number_one_hot, abstract_total_lines_one_hot, tf.constant(abstract_sentences), tf.constant(abstract_char))) # Turning model's prediction into labels abstract_preds=tf.argmax(abstract_pred_probs,axis=1) # Turn predicted labels into string class names predicted_classes=[class_names[i] for i in abstract_preds] # Visualizing abstract lines and predicted labels summary="" for i,line in enumerate(abstract_sentences): summary=summary+f"{predicted_classes[i]}: {line}\n" #summary=f"{predicted_classes[i]}: {line}" return summary demo = gr.Interface(fn=make_predictions, inputs=gr.Textbox(lines=2, placeholder="Enter Abstract Here..."), outputs="text", live=True, title="Sequential sentence classifier for Medical Abstracts", examples=[["Hepatitis C virus (HCV) and alcoholic liver disease (ALD), either alone or in combination, count for more than two thirds of all liver diseases in the Western world. There is no safe level of drinking in HCV-infected patients and the most effective goal for these patients is total abstinence. Baclofen, a GABA(B) receptor agonist, represents a promising pharmacotherapy for alcohol dependence (AD). Previously, we performed a randomized clinical trial (RCT), which demonstrated the safety and efficacy of baclofen in patients affected by AD and cirrhosis. The goal of this post-hoc analysis was to explore baclofen's effect in a subgroup of alcohol-dependent HCV-infected cirrhotic patients. Any patient with HCV infection was selected for this analysis. Among the 84 subjects randomized in the main trial, 24 alcohol-dependent cirrhotic patients had a HCV infection; 12 received baclofen 10mg t.i.d. and 12 received placebo for 12-weeks. With respect to the placebo group (3/12, 25.0%), a significantly higher number of patients who achieved and maintained total alcohol abstinence was found in the baclofen group (10/12, 83.3%; p=0.0123). Furthermore, in the baclofen group, compared to placebo, there was a significantly higher increase in albumin values from baseline (p=0.0132) and a trend toward a significant reduction in INR levels from baseline (p=0.0716). In conclusion, baclofen was safe and significantly more effective than placebo in promoting alcohol abstinence, and improving some Liver Function Tests (LFTs) (i.e. albumin, INR) in alcohol-dependent HCV-infected cirrhotic patients. Baclofen may represent a clinically relevant alcohol pharmacotherapy for these patients."]], description="An NLP model that classifies each sentence of a medical abstract to an appropriate heading in order to significantly reduce time to locate the desired information.") demo.launch(debug=True, inline=True)