Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
fda5d2a
onet data download
karimmdm Mar 27, 2023
435174c
work values download
karimmdm Mar 27, 2023
54dd6ff
cross skills download
karimmdm Mar 27, 2023
ba707af
added cos sim
Mar 27, 2023
2b6b669
Merge pull request #1 from karimmdm/mk-p03
KassandraJ Mar 27, 2023
9d17aca
Merge branch 'master' into ja-p03
KassandraJ Mar 27, 2023
379eeb2
Merge pull request #2 from karimmdm/ja-p03
clarkj Mar 27, 2023
2208bfe
updated data
Mar 27, 2023
07f8bfc
added req.txt
Mar 27, 2023
469b09f
Merge pull request #3 from karimmdm/ja-p03
KassandraJ Mar 27, 2023
18e7474
ONET CSVs to Massive Dictionary
karimmdm Mar 27, 2023
7de0df9
return types
karimmdm Mar 27, 2023
459a0e8
Merge branch 'master' into mk-p03
Jensen615 Mar 27, 2023
ada04b4
Merge pull request #4 from karimmdm/mk-p03
Jensen615 Mar 27, 2023
4c30333
added back req.txt
Mar 27, 2023
ab9e0f9
Merge branch 'master' into ja-p03
karimmdm Mar 27, 2023
2750522
Merge pull request #5 from karimmdm/ja-p03
karimmdm Mar 27, 2023
83b9780
adding first pass at input
Mar 27, 2023
85600cb
Merge branch 'master' of https://github.com/karimmdm/4300-Final-Proje…
Mar 27, 2023
bb5e8dc
Merge pull request #6 from karimmdm/josh/fe1
KassandraJ Mar 27, 2023
d2224f7
updating app.py version
Mar 28, 2023
beaa4dc
Merge pull request #7 from karimmdm/change-app-version
KassandraJ Mar 28, 2023
410cf9d
Update requirements.txt
karimmdm Mar 28, 2023
2b79817
Merge pull request #8 from karimmdm/add-nltk-and-numpy-to-requirements
clarkj Mar 28, 2023
6a08654
add ipython to requirements
karimmdm Mar 28, 2023
eb354dd
Merge pull request #9 from karimmdm/karimmdm-patch-1
karimmdm Mar 28, 2023
31c3780
change folder loc
Mar 28, 2023
f5f9db0
Merge pull request #10 from karimmdm/test
clarkj Mar 28, 2023
7f6f5af
updating port to allocated port
Mar 28, 2023
d44cd71
Merge pull request #11 from karimmdm/test
clarkj Mar 28, 2023
02206e3
removing app run
Mar 28, 2023
aecb186
Merge pull request #12 from karimmdm/test
clarkj Mar 28, 2023
c7e9f8f
decided on tailwind and added search bar
karimmdm Apr 15, 2023
5e92dab
dynamically insert career cards
karimmdm Apr 15, 2023
95b253d
moved script to seperate file and added babel for jsx support
karimmdm Apr 16, 2023
bd8cfb7
re-organized backend code
karimmdm Apr 16, 2023
72f21fa
latest
karimmdm Apr 18, 2023
4716d2d
showing graphs. spacing issue
karimmdm Apr 18, 2023
51518bd
adding glassdoor lookup
Apr 18, 2023
aef2c39
Merge pull request #14 from karimmdm/mk-fe1
karimmdm Apr 18, 2023
f54e326
removed False flag
KassandraJ Apr 26, 2023
033055c
Merge pull request #15 from karimmdm/server-fix
KassandraJ Apr 26, 2023
5668a3b
removed print statements and commented out app.run
KassandraJ Apr 28, 2023
458d256
Merge pull request #16 from karimmdm/server-fix
KassandraJ Apr 28, 2023
bddba6e
file rename
KassandraJ Apr 29, 2023
453b813
Merge pull request #17 from karimmdm/f2-server
KassandraJ Apr 29, 2023
21f272c
adding actual mapping
Apr 29, 2023
88d5e8b
resolving merge conflict
Apr 29, 2023
b18c554
resolving more merge conlifct
Apr 29, 2023
131e5f6
removing pulse, adjusting responses
May 1, 2023
827ba0a
adding radarChart
May 1, 2023
7db63b8
updating glassdoor search a lil
May 2, 2023
749f73d
added some padding
May 2, 2023
0d437a0
weird try catch
May 2, 2023
1ed3f4e
Merge pull request #13 from karimmdm/adding-gs
clarkj May 2, 2023
2b4b951
removing py
May 2, 2023
fd764a9
Merge pull request #18 from karimmdm/comment-out
KassandraJ May 2, 2023
d1d1ecc
query handling stuff
karimmdm May 2, 2023
9429fe2
Merge branch 'master' into mk-ml
karimmdm May 2, 2023
849e515
Merge pull request #19 from karimmdm/mk-ml
karimmdm May 2, 2023
f73688a
fingers crossed
karimmdm May 2, 2023
6184698
Merge pull request #20 from karimmdm/mk-combine
karimmdm May 2, 2023
00f41a9
fix
KassandraJ May 2, 2023
37580b8
flask:
KassandraJ May 2, 2023
4024126
changes
KassandraJ May 2, 2023
46c7e15
updated the port number
KassandraJ May 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ htmlcov/
dist/
build/
*.egg-info/
helpers/*
helpers/*

.env
**/raw_data/
4 changes: 3 additions & 1 deletion backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ WORKDIR $CONTAINER_HOME
ARG DB_NAME
ENV DB_NAME $DB_NAME

RUN pip install -r $CONTAINER_HOME/requirements.txt
RUN pip install -r $CONTAINER_HOME/requirements.txt
RUN pip install --upgrade certifi
RUN python -m spacy download en_core_web_sm
84 changes: 63 additions & 21 deletions backend/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@
from flask import Flask, render_template, request
from flask_cors import CORS
from helpers.MySQLDatabaseHandler import MySQLDatabaseHandler
from collections import defaultdict
from collections import Counter
import json
import math
import numpy as np
import pandas as pd
from nltk.tokenize import TreebankWordTokenizer
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
from IPython.core.display import HTML
import sys
from helpers.OnetCsvHandler import OnetCsvHandler
from helpers import onet_recommender_tools as ort
from helpers import onet_downloader
from helpers.QueryHandler import QueryHandler

# ROOT_PATH for linking with all your files.
# Feel free to use a config.py or settings.py with a global export variable
Expand All @@ -11,35 +26,62 @@
# These are the DB credentials for your OWN MySQL
# Don't worry about the deployment credentials, those are fixed
# You can use a different DB name if you want to
MYSQL_USER = "root"
MYSQL_USER_PASSWORD = "MayankRao16Cornell.edu"
MYSQL_PORT = 3306
MYSQL_DATABASE = "kardashiandb"
# MYSQL_USER = "root"
# MYSQL_USER_PASSWORD = os.getenv("MYSQL_USER_PASSWORD")
# MYSQL_PORT = 3306
# MYSQL_DATABASE = "kardashiandb"

mysql_engine = MySQLDatabaseHandler(MYSQL_USER,MYSQL_USER_PASSWORD,MYSQL_PORT,MYSQL_DATABASE)
# mysql_engine = MySQLDatabaseHandler(MYSQL_USER,MYSQL_USER_PASSWORD,MYSQL_PORT,MYSQL_DATABASE)

# Path to init.sql file. This file can be replaced with your own file for testing on localhost, but do NOT move the init.sql file
mysql_engine.load_file_into_db()
# # Path to init.sql file. This file can be replaced with your own file for testing on localhost, but do NOT move the init.sql file
# mysql_engine.load_file_into_db('/Users/jensen615/cs4300/careerfinder/init.sql')

app = Flask(__name__)
CORS(app)

# Sample search, the LIKE operator in this case is hard-coded,
# but if you decide to use SQLAlchemy ORM framework,
# there's a much better and cleaner way to do this
def sql_search(episode):
query_sql = f"""SELECT * FROM episodes WHERE LOWER( title ) LIKE '%%{episode.lower()}%%' limit 10"""
keys = ["id","title","descr"]
data = mysql_engine.query_selector(query_sql)
return json.dumps([dict(zip(keys,i)) for i in data])
TEST = False

def get_data(download=True):
raw_data_dir = "/helpers/raw_data/"

if download:
onet_downloader.mkdir(raw_data_dir)

onet_downloader.download_interests(raw_data_dir)
onet_downloader.download_knowledge(raw_data_dir)
onet_downloader.download_values(raw_data_dir)
onet_downloader.download_cross_skills(raw_data_dir)

csv_handler = OnetCsvHandler()
csv_handler.generate_onet_dictionary(raw_data_dir)
return csv_handler.data()

jobs = get_data(False if TEST else True)
inv_idx = ort.inverted_index(jobs)
job_idx_map = ort.job_to_idx(jobs)
skills_idx_map = ort.skill_to_idx(inv_idx)
n_docs = len(jobs.items())
idf = ort.compute_idf(inv_idx, n_docs)
doc_norms = ort.compute_doc_norms(inv_idx, idf, n_docs, job_idx_map)

skillsTrainingCsvPath = "/helpers/querySkillsTraining.csv"
skillsTrainingCsvPath2 = "/helpers/querySkillsTraining2.csv"
queryHandler = QueryHandler()
queryHandler.load_csv_training_data(skillsTrainingCsvPath)
queryHandler.trainCNN()

@app.route("/")
def home():
return render_template('base.html',title="sample html")
return render_template('careerfinder.html', title="sample html")

@app.route("/search")
def career_search():
text = request.args.get("interest")
newText = queryHandler.query(text)
result = ort.top10_results(newText, jobs, inv_idx, idf, doc_norms, job_idx_map)
print(result)
return result

@app.route("/episodes")
def episodes_search():
text = request.args.get("title")
return sql_search(text)
if TEST:
app.run(debug=True)

# app.run(debug=True)
49 changes: 49 additions & 0 deletions backend/app_legacy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import json
import os
from flask import Flask, render_template, request
from flask_cors import CORS
from helpers.MySQLDatabaseHandler import MySQLDatabaseHandler
from dotenv import load_dotenv

load_dotenv()

# ROOT_PATH for linking with all your files.
# Feel free to use a config.py or settings.py with a global export variable
os.environ['ROOT_PATH'] = os.path.abspath(os.path.join("..",os.curdir))

# These are the DB credentials for your OWN MySQL
# Don't worry about the deployment credentials, those are fixed
# You can use a different DB name if you want to
# MYSQL_USER = "root"
# MYSQL_USER_PASSWORD = os.getenv("MYSQL_USER_PASSWORD")
# MYSQL_PORT = 3306
# MYSQL_DATABASE = "kardashiandb"

# mysql_engine = MySQLDatabaseHandler(MYSQL_USER,MYSQL_USER_PASSWORD,MYSQL_PORT,MYSQL_DATABASE)

# Path to init.sql file. This file can be replaced with your own file for testing on localhost, but do NOT move the init.sql file
# mysql_engine.load_file_into_db()

app = Flask(__name__)
CORS(app)

# Sample search, the LIKE operator in this case is hard-coded,
# but if you decide to use SQLAlchemy ORM framework,
# there's a much better and cleaner way to do this
def sql_search(episode):
query_sql = f"""SELECT * FROM episodes WHERE LOWER( title ) LIKE '%%{episode.lower()}%%' limit 10"""
keys = ["id","title","descr"]
# data = mysql_engine.query_selector(query_sql)
# return json.dumps([dict(zip(keys,i)) for i in data])
return None

@app.route("/")
def home():
return render_template('base.html',title="sample html")

@app.route("/episodes")
def episodes_search():
text = request.args.get("title")
return sql_search(text)

# app.run(debug=True)
Loading