import streamlit as st from PyPDF2 import PdfReader import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import streamlit as st from PyPDF2 import PdfReader import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity from gliner import GLiNER import streamlit as st import pandas as pd from PyPDF2 import PdfReader from gliner import GLiNER import streamlit as st import pandas as pd from PyPDF2 import PdfReader from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import tempfile txt = st.text_area("Job description", key = "text 1") job = pd.Series(txt, name="Text") st.dataframe(job) uploaded_files = st.file_uploader( "Choose a CSV file", accept_multiple_files=True, type = "pdf", key = "candidate 1" ) for uploaded_file in uploaded_files: pdf_reader = PdfReader(uploaded_file) text_data = "" for page in pdf_reader.pages: text_data += page.extract_text() data = pd.Series(text_data, name = 'Text') st.dataframe(data) frames = [job, data] result1 = pd.concat(frames) st.dataframe(result1) result = result1.values.tolist() st.dataframe(result) model = GLiNER.from_pretrained("urchade/gliner_base") labels = ["person", "country", "organization", "time", "role"] entities = model.predict_entities(text_data, labels) entity_dict = {} for label in labels: entity_dict[label] = [entity["text"] for entity in entities if entity["label"] == label] data = {"Text": text_data, **entity_dict} st.dataframe(data) vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(result) tfidf_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) st.subheader("TF-IDF Values:") st.dataframe(tfidf_df) cosine_sim_matrix = cosine_similarity(tfidf_matrix) cosine_sim_df = pd.DataFrame(cosine_sim_matrix) st.subheader("Cosine Similarity Matrix:") st.dataframe(cosine_sim_df) import plotly.express as px fig = px.imshow(cosine_sim_df, text_auto=True, labels=dict(x="Cosine similarity", y="Text", color="Productivity"), x=['text1', 'text2'], y=['text1', 'text2']) st.plotly_chart(fig) st.subheader("Cosine Similarity Scores (Job Description vs. Resumes):") for i, similarity_score in enumerate(cosine_sim_matrix[0][1:]): st.write(f"Similarity with Candidate Profile {i + 1}: {similarity_score:.4f}") st.divider() txt = st.text_area("Job description", key = "text 2") job = pd.Series(txt, name="Text") st.dataframe(job) uploaded_files = st.file_uploader( "Choose a CSV file", accept_multiple_files=True, type = "pdf", key = "candidate 2" ) for uploaded_file in uploaded_files: pdf_reader = PdfReader(uploaded_file) text_data = "" for page in pdf_reader.pages: text_data += page.extract_text() data = pd.Series(text_data, name = 'Text') st.dataframe(data) frames = [job, data] result = pd.concat(frames) st.dataframe(result)