NLP_PROJECT / app.py
Preethamreddy799's picture
push to main
9f85c11
import streamlit as st
import numpy as np
from tensorflow.keras.models import load_model
from huggingface_hub import hf_hub_download
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
import gensim
import nltk
import os
# Download necessary NLTK resources
nltk.download('stopwords')
nltk.download('wordnet')
# Load stop words and lemmatizer
stop_words = set(stopwords.words('english'))
lemmatizer = WordNetLemmatizer()
# Function to preprocess input text
def preprocess_text(input_text, word2vec_model):
input_text = input_text.lower()
tokens = input_text.split()
tokens = [token for token in tokens if token not in stop_words]
tokens = [lemmatizer.lemmatize(token, pos='v') for token in tokens]
embeddings = []
for token in tokens:
if token in word2vec_model.wv:
embeddings.append(word2vec_model.wv[token])
else:
embeddings.append(np.zeros(word2vec_model.vector_size))
max_timesteps = 100
if len(embeddings) > max_timesteps:
embeddings = embeddings[:max_timesteps]
else:
padding = [np.zeros(word2vec_model.vector_size)] * (max_timesteps - len(embeddings))
embeddings.extend(padding)
input_features = np.array(embeddings).reshape((1, max_timesteps, word2vec_model.vector_size))
return input_features
# Load Word2Vec model
def load_word2vec_model():
repo_id = 'Preethamreddy799/NLP_MODEL'
filename = 'word2vec_model.bin'
word2vec_path = hf_hub_download(repo_id=repo_id, filename=filename)
return gensim.models.Word2Vec.load(word2vec_path)
# Load LSTM model
def load_model_test_steps():
repo_id = 'Preethamreddy799/NLP_MODEL'
filename = 'model_test_steps.h5'
cached_model_path = hf_hub_download(repo_id=repo_id, filename=filename)
model = load_model(cached_model_path, compile=False)
print(f"Model loaded successfully from {cached_model_path}")
return model
# Initialize models
word2vec_model = load_word2vec_model()
lstm_model = load_model_test_steps()
# Streamlit App
st.title("Test Case Steps Generator")
st.write("This app generates test steps based on Test Case Acceptance Criteria.")
acceptance_criteria = st.text_area("Enter Test Case Acceptance Criteria")
if st.button("Generate Test Steps"):
if acceptance_criteria:
input_features = preprocess_text(acceptance_criteria, word2vec_model)
print("Original Shape:", input_features.shape) # Debugging
# Adjust input for the model's requirements
input_features = input_features[:, :1, :] # Retain only the first timestep
print("Adjusted Shape:", input_features.shape) # Debugging
try:
predicted_steps = lstm_model.predict(input_features)
st.subheader("Generated Test Steps")
st.write(predicted_steps)
except Exception as e:
st.error(f"Error generating predictions: {e}")