import gradio as gr from googletrans import Translator import nltk from nltk.tokenize import word_tokenize from nltk.corpus import stopwords from nltk.stem import WordNetLemmatizer # Download necessary NLTK data nltk.download('punkt', quiet=True) nltk.download('stopwords', quiet=True) nltk.download('wordnet', quiet=True) # Initialize components translator = Translator() def natural_language_understanding(text): tokens = word_tokenize(text.lower()) stop_words = set(stopwords.words('english')) lemmatizer = WordNetLemmatizer() processed_tokens = [lemmatizer.lemmatize(token) for token in tokens if token not in stop_words] return " ".join(processed_tokens) def translate_text(text, target_language): translated = translator.translate(text, dest=target_language) return translated.text def process_input(input_text, feature, target_language): if not input_text: return "No input provided" processed_text = natural_language_understanding(input_text) if feature == "Translation": result = translate_text(processed_text, target_language) elif feature == "Transcription": result = processed_text else: result = "Invalid feature selected" return result # Create Gradio interface iface = gr.Interface( fn=process_input, inputs=[ gr.Textbox(label="Input Text"), gr.Radio(["Translation", "Transcription"], label="Feature"), gr.Textbox(label="Target Language (for translation)") ], outputs=gr.Textbox(label="Result"), title="Simple Multi-Faceted Chatbot", description="Enter text, choose a feature, and specify a target language for translation if needed." ) # Launch the interface iface.launch()