import gradio as gr import re from transformers import pipeline title = "Fold: Contextual Tag Recommendation System" description = "powered by bart-large-mnli, made by @abhisheky127" classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli") #define a function to process your input and output def zero_shot(doc, candidates): given_labels = candidates.split(",") given_labels = list(map(str.strip, given_labels)) doc = preprocess(doc) print(doc) dictionary = classifier(doc, given_labels) labels = dictionary['labels'] scores = dictionary['scores'] return dict(zip(labels, scores)) #define a function to preprocess transaction query # def preprocess(transaction): # pattern = r'([A-Za-z0-9\s]+)(?:/| |$)' # match = re.search(pattern, transaction) # if match: # return match.group(1).strip() # return None # def preprocess(transaction): # remove_words = ["pos", "mps", "bil", "onl"] # # Convert to lowercase # transaction = transaction.lower() # # Remove unwanted words # for word in remove_words: # transaction = transaction.replace(word, "") # # Remove special characters and digits # transaction = re.sub(r"[^a-z\s]+", "", transaction) # # Remove extra spaces # transaction = re.sub(r"\s+", " ", transaction).strip() # return transaction def preprocess(text): # Remove digits cleaned_text = re.sub(r'\d', '', text) # Remove special characters except spaces and letters cleaned_text = re.sub(r'[^a-zA-Z\s]', ' ', cleaned_text) # Remove extra spaces cleaned_text = re.sub(r'\s+', ' ', cleaned_text).strip() # Convert to uppercase cleaned_text = cleaned_text.upper() # Remove unwanted words words_to_remove = ["MPS", "POS", "BIL", "ONL", "BANGALORE", "PVT", "LTD", "INDIA", "LT", "xxxxxxxxxxxx"] cleaned_text = " ".join([word for word in cleaned_text.split() if word not in words_to_remove]) # Convert to lowercase cleaned_text = cleaned_text.lower() return cleaned_text #create input and output objects #input object1 input1 = gr.Textbox(label="Text") #input object 2 input2 = gr.Textbox(label="Labels") #output object output = gr.Label(label="Output") #example object transactions_and_tags = [ ["MPS/TRUFFLES/202303261700/034587/Bangalore", "Medical, Food, Shopping, Subscription, Travel"], ["MPS/TACO BELL/202304012247/108300/BANGALORE", "Medical, Food, Shopping, Subscription, Travel"], ["POS XXXXXXXXXXXX0001 APOLLO PHARMACY", "Medical, Food, Shopping, Subscription, Travel"], ["BIL/ONL/000471093694/1MG Techno/X7ZRUSVLURFQZO", "Medical, Food, Shopping, Subscription, Travel"], ["POS XXXXXXXXXXXX1111 DECATHLON SPORTS", "Medical, Food, Shopping, Subscription, Travel"], ["POS XXXXXXXXXXXX1111 IKEA INDIA PVT L", "Medical, Food, Shopping, Subscription, Travel"], ["POS XXXXXXXXXXXX1111 WWW AMAZON IN", "Medical, Food, Shopping, Subscription, Travel"], ["ME DC SI XXXXXXXXXXXX1111 SPOTIFY SI", "Medical, Food, Shopping, Subscription, Travel"], ["POS/NETFLIX/1140920002/100623/17:25", "Medical, Food, Shopping, Subscription, Travel"], ["POS XXXXXXXXXXXX1110 MAKEMYTRIP INDIA", "Medical, Food, Shopping, Subscription, Travel"], ["BIL/ONL/000691178015/IRCTC Serv/XZZBX91LTCY1AZ", "Medical, Food, Shopping, Subscription, Travel"] ] #create interface gui = gr.Interface(title=title, description=description, fn=zero_shot, inputs=[input1, input2], outputs=[output], examples=transactions_and_tags) #display the interface gui.launch(debug=True)