import streamlit as st import numpy as np import pandas as pd import string from tensorflow.keras.models import load_model # Load your trained model loaded_model = load_model("Word_Correction.h5") # Load your data data = pd.read_csv("Word_label_dict.csv") # Make sure to replace "Word_label_dict.csv" with your dataset file dataa = pd.read_csv("OPTED-Dictionary.csv") # Create arrays for uppercase and lowercase letters lowercase_list = np.array(list(string.ascii_lowercase)) uppercase_list = np.array(list(string.ascii_uppercase)) def mat(input_string): lst = np.zeros(26, dtype=int) # Initialize a NumPy array filled with zeros for char in input_string: if char.isupper(): index = np.where(uppercase_list == char)[0] # Find the index of the uppercase letter if len(index) > 0: lst[index[0]] += 1 elif char.islower(): index = np.where(lowercase_list == char)[0] # Find the index of the lowercase letter if len(index) > 0: lst[index[0]] += 1 return pred(lst) def pred(array): y = loaded_model.predict(np.array([array])) # Pass array as a numpy array top_classes = np.argsort(y, axis=1)[0][-3:][::-1] # Get indices of top three probabilities top_probabilities = np.sort(y, axis=1)[0][-3:][::-1] # Get top three probabilities return top_classes, top_probabilities def get_definition(word): definition = dataa[dataa['Word'] == word]['Definition'].values if len(definition) > 0: return definition[0] else: return None def main(): st.title("**Smart Dictionary with Auto-Correction**") input_text = st.text_input("Enter the Word") if st.button("Check"): top_classes, top_probabilities = mat(input_text) for i, (class_, probability) in enumerate(zip(top_classes, top_probabilities)): suggested_word = data[data.Label == class_].Word.values[0] if st.button(f"Suggested Word: {suggested_word}"): definition = get_definition(suggested_word) if definition: st.write(f"The dictionary meaning of '{suggested_word}' is: {definition}") else: st.write(f"No definition found for '{suggested_word}' in the dictionary.") if __name__ == "__main__": main()