nlpblogs's picture
Update app.py
8898bf4 verified
raw
history blame
3.91 kB
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.reset_index()
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)
if data is not None:
value_counts1 = data['label'].value_counts()
df1 = pd.DataFrame(value_counts1)
final_df = df1.reset_index().rename(columns={"index": "label"})
fig2 = px.bar(final_df, x="count", y="label", color="label", text_auto=True, title='Occurrences of predicted labels')
st.plotly_chart(fig2)
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', 'Jon Description'],
y=['text1', 'Job Description'])
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)