Spaces:
Sleeping
Sleeping
Commit
·
216c730
1
Parent(s):
9c4894f
Upload app.py
Browse files
app.py
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import torch
|
3 |
+
import pickle
|
4 |
+
import time
|
5 |
+
import pandas as pd
|
6 |
+
from iteration_utilities import unique_everseen
|
7 |
+
from sentence_transformers import util
|
8 |
+
from loader import bi_encoder, cross_encoder, df, job_corpus_ecoded, job_corpus
|
9 |
+
|
10 |
+
|
11 |
+
def jobsearch(query,df, top_k=100):
|
12 |
+
#print("Answer by NinjaBot : ")
|
13 |
+
ans = []
|
14 |
+
question_embedding = bi_encoder.encode(query, convert_to_tensor=True)
|
15 |
+
hits = util.semantic_search(question_embedding, job_corpus_ecoded, top_k=top_k)
|
16 |
+
hits = hits[0]
|
17 |
+
cross_inp = [[query, job_corpus[hit['corpus_id']]] for hit in hits]
|
18 |
+
cross_scores = cross_encoder.predict(cross_inp)
|
19 |
+
for idx in range(len(cross_scores)):
|
20 |
+
hits[idx]['cross-score'] = cross_scores[idx]
|
21 |
+
|
22 |
+
hits = sorted(hits, key=lambda x: x['cross-score'], reverse=True)
|
23 |
+
#indexes = []
|
24 |
+
search_result = []
|
25 |
+
for idx, hit in enumerate(hits[0:10]):
|
26 |
+
obj = {}
|
27 |
+
ans.append(job_corpus[hit['corpus_id']])
|
28 |
+
#indexes.append(job_corpus.index(job_corpus[hit['corpus_id']]))
|
29 |
+
obj['title'] = df.at[job_corpus.index(job_corpus[hit['corpus_id']]),'title']
|
30 |
+
obj['link'] = df.at[job_corpus.index(job_corpus[hit['corpus_id']]),'url']
|
31 |
+
search_result.append(obj)
|
32 |
+
final_search_result = list(unique_everseen(search_result))
|
33 |
+
return final_search_result
|
34 |
+
#return df.at[indexes[0],'title'],df.at[indexes[1],'title'],df.at[indexes[2],'title'],df.at[indexes[3],'title'],df.at[indexes[4],'title']
|
35 |
+
#return ans[0],ans[1],ans[2],ans[3],ans[4]
|
36 |
+
|
37 |
+
def main():
|
38 |
+
if 'submitted' not in st.session_state:
|
39 |
+
st.session_state.submitted = False
|
40 |
+
|
41 |
+
def callback():
|
42 |
+
st.session_state.submitted = True
|
43 |
+
|
44 |
+
st.title('Job Search Engine 💼')
|
45 |
+
st.text("")
|
46 |
+
st.text("")
|
47 |
+
query = st.text_input('Enter your job query here ! ')
|
48 |
+
if (st.button("Search", on_click=callback) and query) :
|
49 |
+
with st.spinner('Fetching the best jobs for you!...'):
|
50 |
+
time.sleep(10)
|
51 |
+
result = jobsearch(query, df)
|
52 |
+
st.success('NinjaBot : Here are a few suggestions')
|
53 |
+
#st.write(f"This is the query : {query}")
|
54 |
+
st.write(result)
|
55 |
+
main()
|