File size: 2,336 Bytes
da01e30
150d896
 
 
 
 
f052e14
150d896
 
 
 
 
 
 
 
 
 
 
 
 
f052e14
 
 
 
 
 
 
 
 
 
 
150d896
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f052e14
150d896
 
867ddae
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import streamlit as st
import requests

@st.cache_data
def get_top_relevant_normalized_job_titles(job_title, num_answers):
    # JAMES API endpoint for the top-N relevant normalized job titles
    api_endpoint = f'http://james-mapping.xyz/api/v1/related?job_title={job_title}&num_answers={num_answers}'

    try:
        # Send GET request to JAMES API
        response = requests.get(api_endpoint)

        if response.status_code == 200:
            # Successful API call
            response_data = response.json()
            normed_job_title_list = response_data.get("normed_job_title_list", [])

            if not normed_job_title_list:
                return ["No normalized titles found"]

            # Ensure that you have at least 10 results
            while len(normed_job_title_list) < 10:
                # Fetch more data until you have at least 10 results
                num_answers += 1
                api_endpoint = f'http://james-mapping.xyz/api/v1/related?job_title={job_title}&num_answers={num_answers}'
                response = requests.get(api_endpoint)
                response_data = response.json()
                new_titles = response_data.get("normed_job_title_list", [])
                normed_job_title_list.extend(new_titles)

            return normed_job_title_list
        else:
            # API call unsuccessful
            return [f'Error: {response.status_code}']
    except requests.exceptions.RequestException as e:
        return [f'Error: {e}']

def main():
    # Set page title
    st.set_page_config(page_title='JAMES API Demo', layout='centered')
    st.title('JAMES Job Title Mapping')

    # Job title input field
    job_title = st.text_input('Enter a job title')
    num_answers = st.number_input('Select Number of Answers', min_value=1, max_value=10, step=1, value=5)

    # Submit button for top-N relevant titles
    if st.button(f'Get Top {num_answers} Relevant Titles'):
        # Perform job title normalization using the top-N relevant titles
        top_normalized_titles = get_top_relevant_normalized_job_titles(job_title, num_answers)

        st.subheader(f'Top {num_answers} Relevant Titles:')
        for i, normed_job_title in enumerate(top_normalized_titles[:num_answers], 1):
            st.text(f'{i}: {normed_job_title}')

if __name__ == '__main__':
    main()