Robzy commited on
Commit
762e05d
Β·
1 Parent(s): 6431e51

mismatch deletion

Browse files
README.md CHANGED
@@ -31,7 +31,7 @@ Save all skills. Make a comprehensive overview by:
31
  1. Embed skills to a vector with an embedding model
32
  2. Perform clustering with HDBSCAN
33
  2. Visualize clustering with dimensionality reduction (UMAP)
34
-
35
  Inspiration: [link](https://dylancastillo.co/posts/clustering-documents-with-openai-langchain-hdbscan.html)
36
 
37
 
@@ -46,3 +46,12 @@ You should define your own project by writing at most one page description of th
46
  ### What to deliver
47
  You should deliver your project as a stand alone serverless ML system. You should submit a URL for your service, a zip file containing your code, and a short report (two to three pages) about what you have done, the dataset, your method, your results, and how to run the code. I encourage you to have the README.md for your project in your Github report as the report for your project.
48
 
 
 
 
 
 
 
 
 
 
 
31
  1. Embed skills to a vector with an embedding model
32
  2. Perform clustering with HDBSCAN
33
  2. Visualize clustering with dimensionality reduction (UMAP)
34
+
35
  Inspiration: [link](https://dylancastillo.co/posts/clustering-documents-with-openai-langchain-hdbscan.html)
36
 
37
 
 
46
  ### What to deliver
47
  You should deliver your project as a stand alone serverless ML system. You should submit a URL for your service, a zip file containing your code, and a short report (two to three pages) about what you have done, the dataset, your method, your results, and how to run the code. I encourage you to have the README.md for your project in your Github report as the report for your project.
48
 
49
+
50
+
51
+
52
+
53
+ 1. Scraping
54
+ 2. Tagging of JP
55
+ - tag date
56
+ 3. Training
57
+ 4. Visualisation
__pycache__/embedding_gen.cpython-312.pyc ADDED
Binary file (6.41 kB). View file
 
app.py CHANGED
@@ -1,14 +1,16 @@
1
  import gradio as gr
2
  from transformers import pipeline
 
 
 
3
 
4
  token_skill_classifier = pipeline(model="jjzha/jobbert_skill_extraction", aggregation_strategy="first")
5
- token_knowledge_classifier = pipeline(model="jjzha/jobbert_knowledge_extraction", aggregation_strategy="first")
6
 
7
 
8
  examples = [
9
- "Knowing Python is a plus",
10
- "Recommend changes, develop and implement processes to ensure compliance with IFRS standards",
11
- "Experience with Unreal and/or Unity and/or native IOS/Android 3D development and/or Web based 3D engines",
12
  ]
13
 
14
 
@@ -29,11 +31,7 @@ def aggregate_span(results):
29
  return new_results
30
 
31
  def ner(text):
32
- output_skills = token_skill_classifier(text)
33
- for result in output_skills:
34
- if result.get("entity_group"):
35
- result["entity"] = "Skill"
36
- del result["entity_group"]
37
 
38
  output_knowledge = token_knowledge_classifier(text)
39
  for result in output_knowledge:
@@ -41,17 +39,37 @@ def ner(text):
41
  result["entity"] = "Knowledge"
42
  del result["entity_group"]
43
 
44
- if len(output_skills) > 0:
45
- output_skills = aggregate_span(output_skills)
46
  if len(output_knowledge) > 0:
47
  output_knowledge = aggregate_span(output_knowledge)
48
 
49
- return {"text": text, "entities": output_skills}, {"text": text, "entities": output_knowledge}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
 
 
 
 
 
 
 
 
51
 
52
- demo = gr.Interface(fn=ner,
53
- inputs=gr.Textbox(placeholder="Enter sentence here..."),
54
- outputs=["highlight", "highlight"],
55
- examples=examples)
56
 
57
  demo.launch()
 
1
  import gradio as gr
2
  from transformers import pipeline
3
+ from embedding_gen import load_skills_from_date, visualize3D
4
+ import numpy as np
5
+ import pickle
6
 
7
  token_skill_classifier = pipeline(model="jjzha/jobbert_skill_extraction", aggregation_strategy="first")
8
+ token_knowledge_classifier = pipeline(model="Robzy/jobbert_knowledge_extraction", aggregation_strategy="first")
9
 
10
 
11
  examples = [
12
+ "High proficiency in Python and AI/ML frameworks, i.e. Pytorch.",
13
+ "Experience with Unreal and/or Unity and/or native IOS/Android 3D development",
 
14
  ]
15
 
16
 
 
31
  return new_results
32
 
33
  def ner(text):
34
+
 
 
 
 
35
 
36
  output_knowledge = token_knowledge_classifier(text)
37
  for result in output_knowledge:
 
39
  result["entity"] = "Knowledge"
40
  del result["entity_group"]
41
 
 
 
42
  if len(output_knowledge) > 0:
43
  output_knowledge = aggregate_span(output_knowledge)
44
 
45
+ return {"text": text, "entities": output_knowledge}
46
+
47
+
48
+ import plotly.express as px
49
+ import numpy as np
50
+
51
+ specific_date = "03-01-2024" # Example date folder to process
52
+ skills = load_skills_from_date('./tags', specific_date)
53
+ embeddings = np.load(f"./vectorstore/{specific_date}_embeddings.npy")
54
+ with open(f"./vectorstore/{specific_date}_metadata.pkl", "rb") as f:
55
+ metadata = pickle.load(f)
56
+ labels, skills = metadata["labels"], metadata["skills"]
57
+ fig = visualize3D(embeddings, labels, skills, n_clusters=5, output_folder="./plots", date=specific_date)
58
+ fig.update_layout(
59
+ height=900
60
+ )
61
 
62
+ with gr.Blocks() as demo:
63
+
64
+ gr.Interface(fn=ner,
65
+ inputs=gr.Textbox(placeholder="Enter sentence here..."),
66
+ outputs=["highlight"],
67
+ examples=examples,
68
+ title="In-demand skills in machine learning (ML) industry"
69
+ )
70
 
71
+ # gr.Markdown("Embedding visualisation of sought skills in ML job posting in Stockholm, Sweden on LinkedIn")
72
+ gr.Plot(fig)
73
+
 
74
 
75
  demo.launch()
config.yaml CHANGED
@@ -1,4 +1,4 @@
1
  training:
2
- epochs: 3
3
- batch_size: 16
4
  learning_rate: 0.00005
 
1
  training:
2
+ epochs: 2
3
+ batch_size: 32
4
  learning_rate: 0.00005
data/tags-04-01-2025.jsonl ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"tokens": ["About", "the", "job"], "tags_knowledge": ["O", "O", "O"]}
2
+ {"tokens": ["R", "##ill", "##ion", "is", "seeking", "a", "skilled", "AI", "Engineer", "to", "join", "our", "innovative", "Data", "/", "AI", "team", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "B", "O", "B", "O", "O"]}
3
+ {"tokens": ["In", "this", "role", ",", "you", "\u2019", "ll", "be", "pivotal", "in", "developing", "machine", "learning", "models", "that", "drive", "AI", "-", "powered", "AP", "(", "A", "##cco", "##unts", "Pay", "##able", ")", "automation", "and", "enhance", "our", "products", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "B", "O", "O", "B", "O", "O", "B", "O", "B", "I", "I", "I", "I", "O", "B", "O", "O", "O", "O", "O"]}
4
+ {"tokens": ["Together", ",", "we", "collaborate", "across", "the", "entire", "product", "life", "##cycle", "\u2014", "from", "brains", "##tor", "##ming", "and", "design", "to", "implementation", "\u2014", "unlock", "##ing", "AI", "\u2019", "s", "potential", "in", "AP", "automation", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "O", "O", "O", "O", "O", "O", "B", "O", "B", "O", "O", "O", "B", "O", "O", "O", "O", "B", "B", "O"]}
5
+ {"tokens": ["If", "you", "\u2019", "re", "an", "experienced", "AI", "/", "M", "##L", "developer", "who", "th", "##rive", "##s", "in", "a", "dynamic", "environment", ",", "we", "\u2019", "d", "love", "to", "have", "you", "on", "board", "!"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
6
+ {"tokens": ["Re", "##sp", "##ons", "##ibi", "##lities", ":"], "tags_knowledge": ["O", "O", "O", "O", "O", "O"]}
7
+ {"tokens": ["The", "AI", "Engineer", "plays", "a", "key", "role", "in", "developing", "and", "implementing", "AI", "technologies", "into", "our", "Sa", "##a", "##S", "products", ",", "with", "a", "focus", "on", "technical", "execution", "rather", "than", "leadership", "."], "tags_knowledge": ["O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "B", "I", "I", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O"]}
8
+ {"tokens": ["This", "role", "is", "critical", "in", "building", ",", "integrating", ",", "and", "op", "##ti", "##mizing", "AI", "/", "M", "##L", "solutions", "to", "meet", "product", "goals", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O"]}
9
+ {"tokens": ["Dev", "##elo", "##p", "and", "implement", "s", "##cal", "##able", "AI", "/", "M", "##L", "models", "that", "support", "product", "objectives", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O"]}
10
+ {"tokens": ["Col", "##la", "##bor", "##ate", "closely", "with", "product", ",", "engineering", ",", "and", "data", "teams", "to", "integrate", "AI", "features", "into", "our", "products", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "B", "O", "O", "O", "B", "O", "O", "O", "O", "O"]}
11
+ {"tokens": ["Stay", "up", "-", "to", "-", "date", "with", "emerging", "AI", "technologies", "and", "contribute", "to", "experimentation", "and", "innovation", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O", "O"]}
12
+ {"tokens": ["B", "##uild", "and", "maintain", "effective", "AI", "/", "M", "##L", "pipeline", "##s", "and", "deployment", "infrastructure", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O"]}
13
+ {"tokens": ["What", "You", "'", "ll", "Bring", ":"], "tags_knowledge": ["O", "O", "O", "O", "O", "O"]}
14
+ {"tokens": ["2", "+", "years", "hands", "-", "on", "experience", "with", "putting", "self", "-", "developed", "machine", "learning", "solutions", "into", "a", "production", "environment", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O"]}
15
+ {"tokens": ["High", "pro", "##ficiency", "in", "Python", "and", "AI", "/", "M", "##L", "framework", "##s", ",", "i", ".", "e", ".", "P", "##yt", "##or", "##ch", "."], "tags_knowledge": ["O", "O", "O", "O", "B", "O", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O", "O", "B", "I", "I", "I", "O"]}
16
+ {"tokens": ["A", "curious", "minds", "##et", "with", "strong", "collaboration", "skills", "who", "is", "comfortable", "in", "environments", "without", "clear", "-", "cut", "processes", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
17
+ {"tokens": ["Master", "'", "s", "degree", "in", "engineering", "or", "similar", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "B", "O", "O", "O"]}
18
+ {"tokens": ["Bonus", "skills", ":"], "tags_knowledge": ["O", "O", "O"]}
19
+ {"tokens": ["Cloud", "Op", "##s", "and", "I", "##a", "##C", "tools", "such", "as", "Terra", "##form", "."], "tags_knowledge": ["B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "O"]}
20
+ {"tokens": ["M", "##L", "##O", "##ps", "best", "practices", "and", "tools", "like", "Data", "##bri", "##cks", "."], "tags_knowledge": ["B", "I", "I", "I", "O", "O", "O", "O", "O", "B", "I", "I", "O"]}
21
+ {"tokens": ["Knowledge", "of", "working", "with", "visually", "rich", "documents", "(", "V", "##RD", "##s", ")", "and", "genera", "##tive", "AI", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O"]}
22
+ {"tokens": ["Experience", "working", "with", "RA", "##G", ",", "LL", "##M", "evaluation", ",", "API", "-", "driven", "micro", "##ser", "##vice", "##s", ",", "cache", "management", "and", "production", "-", "level", "software", "."], "tags_knowledge": ["O", "O", "O", "B", "I", "O", "B", "I", "O", "O", "B", "O", "O", "B", "I", "I", "I", "O", "B", "O", "O", "O", "O", "O", "O", "O"]}
23
+ {"tokens": ["What", "we", "offer", ":"], "tags_knowledge": ["O", "O", "O", "O"]}
24
+ {"tokens": ["Op", "##port", "##unity", "to", "work", "in", "a", "dynamic", "growth", "company"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
25
+ {"tokens": ["Talent", "##ed", "colleagues", "ready", "to", "support", "the", "success", "in", "your", "career", "path"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
26
+ {"tokens": ["Social", "events", "with", "your", "colleagues", "(", "breakfast", ",", "candy", "-", "time", ",", "after", "##work", "etc", ".", ")"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
27
+ {"tokens": ["A", "collection", "of", "different", "benefits", ",", "including", "a", "generous", "pension", "and", "insurance", "package"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
28
+ {"tokens": ["Hybrid", "working", "model", ",", "2", "days", "per", "week", "in", "the", "office"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
29
+ {"tokens": ["Come", "and", "enjoy", "our", "beautiful", "office", "in", "central", "Stockholm", "(", "on", "the", "14th", "floor", ",", "with", "amazing", "views", ")"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
30
+ {"tokens": ["The", "recruitment", "process", ":"], "tags_knowledge": ["O", "O", "O", "O"]}
31
+ {"tokens": ["We", "review", "applications", "and", "invite", "for", "interviews", "continuously", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O"]}
32
+ {"tokens": ["A", "background", "check", "will", "be", "conducted", "on", "final", "candidates", ",", "pre", "-", "employment", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
33
+ {"tokens": ["About", "R", "##ill", "##ion", ":"], "tags_knowledge": ["O", "O", "O", "O", "O"]}
34
+ {"tokens": ["We", "are", "a", "global", "company", "founded", "in", "Sweden", "with", "30", "years", "\u2019", "experience", "in", "the", "AP", "Auto", "##mation", "industry", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "I", "O", "O"]}
35
+ {"tokens": ["By", "removing", "the", "manual", "steps", "of", "in", "##vo", "##ice", "handling", ",", "we", "enable", "finance", "teams", "to", "save", "time", "and", "effort", ",", "reducing", "the", "possibility", "of", "human", "error", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
36
+ {"tokens": ["Because", "we", "\u2019", "re", "AP", "professionals", "ourselves", ",", "we", "understand", "how", "to", "give", "our", "customers", "everything", "they", "need", ",", "and", "nothing", "they", "don", "\u2019", "t", "."], "tags_knowledge": ["O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
37
+ {"tokens": ["Together", "with", "our", "owners", "at", "Alto", "##r", ",", "we", "##\u00b4", "##re", "on", "a", "journey", "to", "expand", "in", "our", "home", "markets", ",", "while", "entering", "new", "territories", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
38
+ {"tokens": ["To", "complete", "our", "mission", ",", "we", "need", "more", "talented", "people", "!"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
39
+ {"tokens": ["R", "##ill", "##ion", "is", "an", "equal", "opportunity", "employer", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O"]}
40
+ {"tokens": ["About", "the", "job"], "tags_knowledge": ["O", "O", "O"]}
41
+ {"tokens": ["Job", "Des", "##cription"], "tags_knowledge": ["O", "O", "O"]}
42
+ {"tokens": ["We", "are", "on", "the", "journey", "to", "transform", "our", "digital", "capabilities", ",", "bringing", "core", "business", "processes", ",", "people", ",", "data", "&", "technology", "together", "-", "an", "enable", "##r", "for", "I", "##KE", "##A", "to", "become", "an", "even", "better", "home", "fur", "##nish", "##ing", "retailer", "in", "the", "future", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "B", "B", "B", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
43
+ {"tokens": ["If", "that", "sounds", "like", "you", ",", "come", "and", "join", "us", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
44
+ {"tokens": ["Together", "we", "can", "do", "great", "things", "!"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O"]}
45
+ {"tokens": ["Do", "you", "want", "to", "be", "part", "of", "making", "it", "happen", "?"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
46
+ {"tokens": ["Then", "keep", "on", "reading", "."], "tags_knowledge": ["O", "O", "O", "O", "O"]}
47
+ {"tokens": ["The", "Team"], "tags_knowledge": ["O", "O"]}
48
+ {"tokens": ["The", "Spa", "##tial", "Computing", "Team", "drives", "the", "digital", "innovation", "work", "in", "the", "spatial", "computing", "area", "for", "all", "I", "##KE", "##A", "companies", "."], "tags_knowledge": ["O", "B", "I", "B", "I", "O", "O", "B", "B", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O", "O", "O"]}
49
+ {"tokens": ["We", "are", "looking", "for", "a", "Research", "Engineer", "with", "knowledge", "of", "Spa", "##tial", "Computing", "/", "X", "##R", "Development", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "B", "O", "B", "I", "B", "O"]}
50
+ {"tokens": ["In", "this", "position", "you", "will", "use", "your", "technical", "expertise", "to", "find", ",", "explore", ",", "evaluate", "and", "transfer", "innovation", "insights", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O"]}
51
+ {"tokens": ["You", "are", "someone", "with", "an", "innovative", "mind", "and", "lateral", "thinking", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
52
+ {"tokens": ["Someone", "who", "thinks", "virtual", "worlds", "are", "cool", "but", "helping", "real", "people", "is", "even", "better", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
53
+ {"tokens": ["You", "know", "why", "robots", "and", "pie", "go", "well", "together", "and", "why", "point", "clouds", "on", "a", "sunny", "day", "don", "'", "t", "matter", "at", "all", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
54
+ {"tokens": ["Your", "Main", "Re", "##sp", "##ons", "##ibi", "##lities", "Will", "Be", "To"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
55
+ {"tokens": ["Ex", "##p", "##lore", "and", "evaluate", "new", "technology", "and", "its", "possibility", "to", "improve", "I", "##KE", "##A", "customer", "and", "co", "-", "worker", "experience"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
56
+ {"tokens": ["Dev", "##elo", "##p", "real", "-", "time", "3D", "applications", "to", "serve", "as", "inspiring", "proof", "of", "concepts"], "tags_knowledge": ["O", "O", "O", "B", "I", "I", "B", "O", "O", "O", "O", "O", "O", "O", "O"]}
57
+ {"tokens": ["Col", "##la", "##bor", "##ate", "with", "external", "experts", "and", "inn", "##ova", "##tors", "in", "exploration", "##s", "of", "technical", "solutions"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "B", "O"]}
58
+ {"tokens": ["Col", "##lect", "and", "share", "expertise", "with", "I", "##KE", "##A", "stakeholders"], "tags_knowledge": ["O", "O", "O", "O", "B", "O", "O", "O", "O", "O"]}
59
+ {"tokens": ["About", "You"], "tags_knowledge": ["O", "O"]}
60
+ {"tokens": ["The", "person", "we", "'", "re", "looking", "for", "is", "someone", "passionate", "about", "the", "future", "of", "3D", "graphics", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "B", "O"]}
61
+ {"tokens": ["A", "person", "who", "wants", "to", "use", "game", "engine", "for", "more", "than", "just", "for", "games", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O", "O"]}
62
+ {"tokens": ["Someone", "who", "likes", "the", "idea", "of", "conceptual", "##izing", "the", "u", "##topia", "##n", "future", "of", "the", "digital", "-", "human", "interfaces", ",", "to", "interact", "with", "people", "in", "a", "more", "natural", "way", "than", "ever", "before", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "B", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
63
+ {"tokens": ["Someone", "who", "thinks", "Swedish", "meat", "##balls", "have", "the", "potential", "to", "taste", "even", "better", "in", "mixed", "reality", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O"]}
64
+ {"tokens": ["We", "'", "re", "looking", "for", "a", "person", "who", "can", "break", "down", "high", "-", "level", "concepts", "like", "these", "and", "explore", "them", "single", "##hand", "##edly", "or", "as", "part", "of", "a", "team", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
65
+ {"tokens": ["To", "be", "successful", "in", "this", "role", ",", "the", "following", "knowledge", ",", "skills", "and", "experiences", "would", "be", "valuable", ":"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
66
+ {"tokens": ["Understanding", "of", "graphics", "pipeline", "##s", "related", "to", "real", "-", "time", "3D", "environments", "."], "tags_knowledge": ["O", "O", "B", "B", "O", "O", "O", "B", "I", "I", "B", "B", "O"]}
67
+ {"tokens": ["Passion", "for", "how", "sound", "and", "audio", "design", "and", "ha", "##ptic", "##s", "can", "be", "used", "to", "el", "##eva", "##te", "im", "##mers", "##ive", "experiences"], "tags_knowledge": ["O", "O", "O", "B", "O", "B", "B", "O", "B", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B"]}
68
+ {"tokens": ["Experience", "with", "Un", "##real", "and", "/", "or", "Unity", "and", "/", "or", "native", "I", "##OS", "/", "Android", "3D", "development", "and", "/", "or", "Web", "based", "3D", "engines"], "tags_knowledge": ["O", "O", "B", "I", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "B", "O", "B", "B"]}
69
+ {"tokens": ["Experience", "with", "mobile", "application", "development", "and", "deployment", "."], "tags_knowledge": ["O", "O", "B", "B", "B", "O", "B", "O"]}
70
+ {"tokens": ["Programming", "skills", "building", "applications", "communicating", "with", "back", "-", "ends", "and", "building", "applications", "of", "interactive", "worlds", "using", "game", "engines", "and", "3D", "Graphic", "##s", "."], "tags_knowledge": ["B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "B", "B", "B", "O"]}
71
+ {"tokens": ["Good", "knowledge", "of", "at", "least", "2", "different", "core", "programming", "languages", "such", "as", "C", ",", "C", "#", ",", "Python", ",", "C", "+", "+", "or", "Java", "##Script"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "B", "O", "B", "I", "O", "B", "O", "B", "I", "O", "B", "B", "I"]}
72
+ {"tokens": ["You", "'", "ll", "have", "a", "passion", "for", "sharing", "the", "knowledge", "you", "'", "ve", "acquired", ",", "with", "the", "ability", "to", "communicate", "with", "both", "technical", "and", "non", "-", "technical", "stakeholders", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "B", "O"]}
73
+ {"tokens": ["A", "##bility", "to", "formula", "##te", "new", "ideas", "surrounding", "technological", "innovations", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O"]}
74
+ {"tokens": ["A", "##bility", "to", "discuss", "problems", "with", "program", "code", "examples", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "B", "B", "O", "O"]}
75
+ {"tokens": ["Strong", "collaboration", "skills", ",", "with", "experience", "developing", "solutions", "alongside", "other", "teammates", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
76
+ {"tokens": ["Additional", "Information"], "tags_knowledge": ["O", "O"]}
77
+ {"tokens": ["This", "role", "is", "full", "-", "time", "(", "40", "hours", "per", "week", ")", "and", "based", "in", "\u00c4", "##lm", "##hul", "##t", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
78
+ {"tokens": ["This", "role", "sits", "in", "the", "Range", "Operations", "and", "reports", "to", "Innovation", "Manager", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "B", "B", "O"]}
79
+ {"tokens": ["At", "I", "##KE", "##A", ",", "we", "are", "looking", "for", "people", "who", "believe", "everyone", "deserves", "a", "seat", "at", "the", "table", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
80
+ {"tokens": ["You", "\u2019", "re", "welcome", "no", "matter", "where", "you", "come", "from", ",", "what", "you", "believe", ",", "and", "what", "you", "look", "like", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
81
+ {"tokens": ["We", "don", "\u2019", "t", "even", "care", "how", "you", "have", "furnished", "your", "home", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
82
+ {"tokens": ["We", "\u2019", "re", "interested", "in", "you", "simply", "because", "you", "\u2019", "re", "you", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
83
+ {"tokens": ["Even", "if", "your", "experience", "doesn", "\u2019", "t", "al", "##ign", "perfectly", "with", "every", "qualification", "in", "the", "job", "description", ",", "we", "encourage", "you", "to", "apply", "anyway", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
84
+ {"tokens": ["We", "believe", "that", "people", "\u2019", "s", "different", "perspectives", ",", "backgrounds", ",", "and", "personalities", "make", "us", "better", "at", "understanding", "our", "customers", "dreams", "and", "needs", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
85
+ {"tokens": ["At", "I", "##KE", "##A", ",", "we", "\u2019", "re", "all", "on", "the", "same", "project", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
86
+ {"tokens": ["If", "you", "have", "a", "special", "need", "that", "requires", "accommodation", "in", "the", "recruitment", "process", ",", "just", "let", "us", "know", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
87
+ {"tokens": ["Please", "note", "that", "due", "to", "the", "upcoming", "holiday", "season", "in", "December", ",", "our", "recruitment", "process", "may", "take", "a", "bit", "longer", "than", "usual", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
88
+ {"tokens": ["We", "will", "do", "our", "best", "to", "keep", "all", "candidates", "updated", "on", "their", "status", "before", "any", "breaks", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
89
+ {"tokens": ["Thank", "you", "for", "your", "patience", "during", "this", "time", "!"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O"]}
90
+ {"tokens": ["Interest", "##ed", "?"], "tags_knowledge": ["O", "O", "O"]}
91
+ {"tokens": ["Sub", "##mit", "your", "C", "##V", "and", "let", "us", "know", "why", "you", "would", "be", "a", "good", "fit", "for", "this", "role", ",", "in", "English", ",", "by", "7th", "of", "January", "202", "##5", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
92
+ {"tokens": ["About", "the", "job"], "tags_knowledge": ["O", "O", "O"]}
93
+ {"tokens": ["Defence", "projects", ",", "unlocked", "."], "tags_knowledge": ["B", "B", "O", "O", "O"]}
94
+ {"tokens": ["At", "Defence", "."], "tags_knowledge": ["O", "B", "O"]}
95
+ {"tokens": ["Works", ",", "we", "match", "you", "with", "the", "industry", "'", "s", "top", "R", "&", "D", "projects", "and", "help", "you", "deliver", "impact", "for", "a", "safer", "tomorrow", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "B", "I", "I", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
96
+ {"tokens": ["With", "Defence", "."], "tags_knowledge": ["O", "B", "O"]}
97
+ {"tokens": ["Works", ",", "you", "will", "get", "access", "to", "interesting", "projects", "without", "consuming", "time", "on", "sales", "and", "project", "hunting", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "B", "O", "O"]}
98
+ {"tokens": ["Our", "platform", "allows", "us", "to", "keep", "our", "organization", "structure", "thin", ",", "which", "means", "less", "internal", "costs", ",", "more", "value", "to", "customers", ",", "and", "higher", "rates", "for", "you", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
99
+ {"tokens": ["As", "an", "Art", "##ific", "##ial", "Intelligence", "Engineer", "you", "will", "join", "our", "trusted", "network", "to", "work", "on", "cutting", "-", "edge", "R", "&", "D", "projects", "in", "the", "defense", "sector", ",", "contributing", "to", "innovative", "solutions", "that", "enhance", "safety", "and", "security", "for", "a", "safer", "tomorrow", "."], "tags_knowledge": ["O", "O", "B", "I", "I", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "I", "B", "O", "O", "B", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
100
+ {"tokens": ["You", "will", "bring", "deep", "expertise", "in", "machine", "learning", "and", "artificial", "intelligence", ",", "ideal", "##ly", "with", "prior", "experience", "in", "developing", "autonomous", "products", ",", "radar", "systems", ",", "or", "applications", "that", "heavily", "leverage", "AI", "capabilities", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "B", "I", "O", "B", "I", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O"]}
101
+ {"tokens": ["The", "ideal", "candidate", "will", "have", "a", "proven", "track", "record", "of", "building", "secure", ",", "high", "-", "performing", "solutions", "designed", "to", "meet", "the", "defense", "industry", "'", "s", "rigorous", "standards", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "O", "O", "O", "O", "O"]}
102
+ {"tokens": ["Your", "presence", "can", "be", "in", "Northern", "Europe", "(", "Finland", ",", "Sweden", ",", "Norway", ",", "Denmark", ")", ",", "United", "Kingdom", ",", "or", "Germany", "and", "you", "are", "eligible", "to", "pass", "security", "-", "clearance", "before", "starting", "on", "a", "project", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
103
+ {"tokens": ["Please", "notice", "that", "consultant", "##s", "might", "need", "to", "pass", "security", "clearance", "before", "starting", "on", "a", "project", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
104
+ {"tokens": ["Re", "##sp", "##ons", "##ibi", "##lities", ":"], "tags_knowledge": ["O", "O", "O", "O", "O", "O"]}
105
+ {"tokens": ["Design", ",", "implement", ",", "and", "op", "##ti", "##mize", "AI", "models", "and", "algorithms", "for", "defense", "sector", "applications", ",", "including", "autonomous", "systems", ",", "radar", "##s", ",", "and", "AI", "-", "driven", "decision", "-", "making", "tools", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "B", "B", "O", "O", "O", "B", "O", "O", "B", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O"]}
106
+ {"tokens": ["Dev", "##elo", "##p", "secure", ",", "high", "-", "performance", "software", "solutions", "tailored", "to", "meet", "the", "string", "##ent", "requirements", "of", "defense", "industry", "projects", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "B", "B", "O"]}
107
+ {"tokens": ["I", "##dent", "##ify", "and", "address", "v", "##ul", "##ner", "##abi", "##lities", "in", "AI", "systems", ",", "ensuring", "robust", "c", "##y", "##bers", "##ec", "##urity", "measures", "are", "integrated", "throughout", "the", "development", "life", "##cycle", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
108
+ {"tokens": ["Col", "##la", "##bor", "##ate", "with", "cross", "-", "functional", "teams", "to", "al", "##ign", "AI", "capabilities", "with", "overall", "system", "architecture", "##s", ",", "ensuring", "sea", "##m", "##less", "integration", "and", "performance", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
109
+ {"tokens": ["Con", "##duct", "rigorous", "testing", ",", "valid", "##ation", ",", "and", "documentation", "of", "AI", "solutions", "to", "ensure", "reliability", ",", "s", "##cal", "##ability", ",", "and", "compliance", "with", "industry", "standards", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
110
+ {"tokens": ["Qualification", "##s", ":"], "tags_knowledge": ["O", "O", "O"]}
111
+ {"tokens": ["Master", "'", "s", "or", "Ph", ".", "D", ".", "in", "Computer", "Science", ",", "Machine", "Learning", ",", "or", "related", "field"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "O", "B", "I", "O", "O", "O", "O"]}
112
+ {"tokens": ["Strong", "skills", "in", "Pat", "##tern", "Re", "##cognition", ",", "N", "##eur", "##al", "Networks", ",", "and", "Al", "##gor", "##ith", "##ms", "."], "tags_knowledge": ["O", "O", "O", "B", "I", "I", "I", "O", "B", "I", "I", "I", "O", "O", "B", "I", "I", "I", "O"]}
113
+ {"tokens": ["Experience", "from", "developing", "products", "which", "rely", "on", "AI", "/", "M", "##L", "capabilities", "such", "as", "autonomous", "systems", ",", "radar", "technologies", ",", "or", "other", "AI", "-", "re", "##lian", "##t", "defense", "applications", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "B", "O", "B", "I", "O", "O", "O", "B", "O", "O", "B", "O", "O", "O", "O", "B", "O", "O", "O", "O", "B", "O", "O"]}
114
+ {"tokens": ["F", "##ami", "##lia", "##rity", "with", "secure", "system", "design", ",", "c", "##y", "##bers", "##ec", "##urity", "principles", ",", "and", "compliance", "with", "defense", "-", "specific", "regulations", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "O", "O", "O", "O"]}
115
+ {"tokens": ["Additional", "Re", "##quire", "##ments", ":"], "tags_knowledge": ["O", "O", "O", "O", "O"]}
116
+ {"tokens": ["Security", "certification", "##s", "or", "training", "(", "e", ".", "g", ".", ",", "C", "##IS", "##SP", ",", "CE", "##H", ")", "are", "highly", "desirable", "."], "tags_knowledge": ["B", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B", "I", "I", "O", "B", "I", "O", "O", "O", "O", "O"]}
117
+ {"tokens": ["Next", "steps", ":"], "tags_knowledge": ["O", "O", "O"]}
118
+ {"tokens": ["Press", "\"", "A", "##pp", "##ly", "\""], "tags_knowledge": ["O", "O", "O", "O", "O", "O"]}
119
+ {"tokens": ["Sub", "##mit", "your", "resume", "on", "Has", "##hl", "##ist", "platform", "(", "takes", "5", "minutes", ")", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "B", "I", "I", "O", "O", "O", "O", "O", "O", "O"]}
120
+ {"tokens": ["Has", "##hl", "##ist", "is", "our", "parental", "company", "which", "infrastructure", "we", "are", "utilizing", "to", "manage", "the", "profiles"], "tags_knowledge": ["B", "I", "I", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
121
+ {"tokens": ["We", "will", "review", "your", "profile", "and", "if", "your", "profile", "matches", "our", "criteria"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
122
+ {"tokens": ["We", "call", "you", "and", "make", "sure", "that", "your", "expectations", "and", "career", "ambitions", "are", "aligned", "with", "our", "offer", "."], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
123
+ {"tokens": ["You", "will", "get", "accepted", "to", "our", "trusted", "network", "of", "partners", "and", "our", "clients", "and", "receive", "offers", "from", "different", "clients", "who", "are", "looking", "for", "your", "expertise"], "tags_knowledge": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]}
demo-app.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import plotly.express as px
2
+ import numpy as np
3
+
4
+ X = np.random.randint(0, 10, (10, 3))
5
+ fig = px.scatter_3d(x=X[:,0], y=X[:, 1], z=X[:, 2])
6
+ fig.show()
demo.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import plotly.graph_objects as go
3
+ import numpy as np
4
+
5
+ # Function to create a 3D plot
6
+ def create_3d_plot(x_range, y_range):
7
+ # Generate 3D data
8
+ x = np.linspace(-x_range, x_range, 100)
9
+ y = np.linspace(-y_range, y_range, 100)
10
+ x, y = np.meshgrid(x, y)
11
+ z = np.sin(np.sqrt(x**2 + y**2))
12
+
13
+ # Create a 3D surface plot
14
+ fig = go.Figure(data=[go.Surface(z=z, x=x, y=y)])
15
+ fig.update_layout(
16
+ scene=dict(
17
+ xaxis_title='X Axis',
18
+ yaxis_title='Y Axis',
19
+ zaxis_title='Z Axis'
20
+ ),
21
+ margin=dict(l=0, r=0, b=0, t=0),
22
+ height=1000
23
+ )
24
+ return fig
25
+
26
+ # Gradio interface
27
+ with gr.Blocks() as demo:
28
+ gr.Markdown("## Interactive 3D Plot with Gradio and Plotly")
29
+ with gr.Row():
30
+ x_slider = gr.Slider(minimum=1, maximum=10, step=1, value=5, label="X Range")
31
+ y_slider = gr.Slider(minimum=1, maximum=10, step=1, value=5, label="Y Range")
32
+ plot_output = gr.Plot(label="3D Surface Plot")
33
+
34
+ # Update the plot on slider change
35
+ x_slider.change(create_3d_plot, inputs=[x_slider, y_slider], outputs=plot_output)
36
+ y_slider.change(create_3d_plot, inputs=[x_slider, y_slider], outputs=plot_output)
37
+
38
+ # Launch the app
39
+ demo.launch()
embedding_gen.py CHANGED
@@ -4,6 +4,8 @@ import numpy as np
4
  import umap
5
  import matplotlib.pyplot as plt
6
  import plotly.express as px
 
 
7
 
8
  # Step 1: Load skills from all files in a specific date folder
9
  def load_skills_from_date(base_folder, date):
@@ -65,9 +67,7 @@ def visualize_embeddings_3d(reduced_embeddings, skills, output_folder, date):
65
 
66
  fig.show()
67
 
68
- def perform_kmeans_and_visualize(reduced_embeddings, skills, n_clusters, output_folder, date):
69
- kmeans = KMeans(n_clusters=n_clusters, random_state=42)
70
- labels = kmeans.fit_predict(reduced_embeddings)
71
 
72
  fig = px.scatter_3d(
73
  x=reduced_embeddings[:, 0],
@@ -84,30 +84,43 @@ def perform_kmeans_and_visualize(reduced_embeddings, skills, n_clusters, output_
84
  fig.write_html(plot_path)
85
  print(f"3D clustered plot saved at {plot_path}")
86
 
87
- fig.show()
 
88
 
89
- # Main execution
90
- base_folder = "./tags"
91
- output_folder = "./plots"
92
- specific_date = "03-01-2024" # Example date folder to process
93
 
94
- # Load skills from the specified date folder
95
- skills = load_skills_from_date(base_folder, specific_date)
96
- if not skills:
97
- print(f"No skills found for the date: {specific_date}")
98
- else:
99
- print(f"Loaded {len(skills)} unique skills for the date: {specific_date}")
100
-
101
- # Generate embeddings
102
- embeddings = generate_embeddings(skills)
103
-
104
- # Reduce dimensions to 2D and visualize
105
- reduced_embeddings_2d = reduce_dimensions(embeddings, n_components=2)
106
- visualize_embeddings_2d(reduced_embeddings_2d, skills, output_folder, specific_date)
107
-
108
- # Reduce dimensions to 3D and visualize
109
- reduced_embeddings_3d = reduce_dimensions(embeddings, n_components=3)
110
- visualize_embeddings_3d(reduced_embeddings_3d, skills, output_folder, specific_date)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
- # Perform KMeans clustering and visualize in 3D
113
- perform_kmeans_and_visualize(reduced_embeddings_3d, skills, n_clusters, output_folder, specific_date)
 
4
  import umap
5
  import matplotlib.pyplot as plt
6
  import plotly.express as px
7
+ from sklearn.cluster import KMeans
8
+ import pickle
9
 
10
  # Step 1: Load skills from all files in a specific date folder
11
  def load_skills_from_date(base_folder, date):
 
67
 
68
  fig.show()
69
 
70
+ def visualize3D(reduced_embeddings, labels, skills, n_clusters, output_folder, date):
 
 
71
 
72
  fig = px.scatter_3d(
73
  x=reduced_embeddings[:, 0],
 
84
  fig.write_html(plot_path)
85
  print(f"3D clustered plot saved at {plot_path}")
86
 
87
+ # fig.show()
88
+ return fig
89
 
90
+ if __name__ == "__main__":
 
 
 
91
 
92
+ # Main execution
93
+ base_folder = "./tags"
94
+ output_folder = "./plots"
95
+ vector_store = "./vectorstore"
96
+ specific_date = "03-01-2024" # Example date folder to process
97
+ n_clusters = 5
98
+
99
+ # Load skills from the specified date folder
100
+ skills = load_skills_from_date(base_folder, specific_date)
101
+ if not skills:
102
+ print(f"No skills found for the date: {specific_date}")
103
+ else:
104
+ print(f"Loaded {len(skills)} unique skills for the date: {specific_date}")
105
+
106
+ # Generate embeddings
107
+ embeddings = generate_embeddings(skills)
108
+
109
+ # Reduce dimensions to 2D and visualize
110
+ # reduced_embeddings_2d = reduce_dimensions(embeddings, n_components=2)
111
+ # visualize_embeddings_2d(reduced_embeddings_2d, skills, output_folder, specific_date)
112
+
113
+ # Reduce dimensions to 3D, cluster, and visualize
114
+ reduced_embeddings_3d = reduce_dimensions(embeddings, n_components=3)
115
+ kmeans = KMeans(n_clusters=n_clusters, random_state=42)
116
+ labels = kmeans.fit_predict(reduced_embeddings_3d)
117
+ visualize3D(reduced_embeddings_3d, labels, skills, n_clusters, output_folder, specific_date)
118
+
119
+ # Save the reduced embeddings and metadata
120
+ np.save(os.path.join(vector_store, f"{specific_date}_embeddings.npy"), reduced_embeddings_3d)
121
+ with open(os.path.join(vector_store, f"{specific_date}_metadata.pkl"), 'wb') as f:
122
+ pickle.dump({'labels': labels, 'skills': skills}, f)
123
+
124
 
125
+ # Perform KMeans clustering and visualize in 3D
126
+ # perform_kmeans_and_visualize(reduced_embeddings_3d, skills, n_clusters, output_folder, specific_date)
filter-faults.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ def count_mismatch(file_path):
4
+
5
+ count_mismatch = 0
6
+ with open(file_path, 'r') as file:
7
+ for line_number, line in enumerate(file, start=1):
8
+ data = json.loads(line)
9
+ tokens, tags = data['tokens'], data['tags_knowledge']
10
+ if len(tokens) != len(tags):
11
+ count_mismatch += 1
12
+
13
+ return count_mismatch
14
+
15
+ def delete_mismatched_lines(file_path):
16
+ with open(file_path, 'r') as file:
17
+ lines = file.readlines()
18
+
19
+ with open(file_path, 'w') as file:
20
+ for line in lines:
21
+ data = json.loads(line)
22
+ tokens, tags = data['tokens'], data['tags_knowledge']
23
+ if len(tokens) == len(tags):
24
+ file.write(line)
25
+
26
+
27
+ if __name__ == "__main__":
28
+ file_path = 'data/tags-04-01-2025.jsonl'
29
+ count = count_mismatch(file_path)
30
+
31
+ if count > 0:
32
+ delete_mismatched_lines(file_path)
33
+ print(f"Deleted {count} mismatched lines.")
job-postings/{03-01-2024 β†’ 03-01-2025}/1.txt RENAMED
File without changes
job-postings/{03-01-2024 β†’ 03-01-2025}/2.txt RENAMED
File without changes
job-postings/{03-01-2024 β†’ 03-01-2025}/3.txt RENAMED
File without changes
job-postings/{04-01-2024 β†’ 04-01-2025}/1.txt RENAMED
File without changes
job-postings/{04-01-2024 β†’ 04-01-2025}/2.txt RENAMED
File without changes
job-postings/{04-01-2024 β†’ 04-01-2025}/3.txt RENAMED
File without changes
llm-tagging.py CHANGED
@@ -16,6 +16,10 @@ from tabulate import tabulate
16
  import spacy
17
  import re
18
  import json
 
 
 
 
19
 
20
  load_dotenv(".env")
21
  nlp = spacy.load("en_core_web_sm")
@@ -29,8 +33,9 @@ def split_text_recursively(text):
29
 
30
  def tokenize_to_sent(path):
31
 
32
- # Read the file
33
 
 
34
  with open(path, 'r') as file:
35
  text = file.read()
36
 
@@ -47,6 +52,8 @@ def tokenize_to_sent(path):
47
  doc = nlp(line)
48
  for sent in doc.sents:
49
  sents.append(sent.text)
 
 
50
 
51
  return sents
52
 
@@ -92,14 +99,23 @@ prompt = PromptTemplate(
92
  "knowledge_definition": knowledge_definition},
93
  )
94
 
95
- def extract_tags(text: str, tokenize = True) -> Results:
 
 
 
 
 
96
 
97
  if tokenize:
98
- tokens = [tokenizer.tokenize(t) for t in text]
99
 
100
  prompt_and_model = prompt | model
101
  output = prompt_and_model.invoke({"input": tokens})
102
  output = parser.invoke(output)
 
 
 
 
103
  return tokens, output
104
 
105
 
@@ -111,13 +127,43 @@ def tag_posting(job_path, output_path):
111
  # LLM-based tag extraction
112
  tokens, output = extract_tags(sents, tokenize=True)
113
 
114
- with open("./data/data.jsonl", "w") as file:
115
  for entry in output['results']:
116
  json.dump(entry, file)
117
  file.write("\n")
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  if __name__ == "__main__":
120
 
121
- job_path = './job-postings/03-01-2024/1.txt'
122
- output_path = './data/data.json'
123
- tag_posting(job_path, output_path)
 
16
  import spacy
17
  import re
18
  import json
19
+ from datetime import datetime
20
+ from tqdm import tqdm
21
+ import time
22
+
23
 
24
  load_dotenv(".env")
25
  nlp = spacy.load("en_core_web_sm")
 
33
 
34
  def tokenize_to_sent(path):
35
 
36
+ print(f"Tokenizing {path} to sentences...")
37
 
38
+ # Read the file
39
  with open(path, 'r') as file:
40
  text = file.read()
41
 
 
52
  doc = nlp(line)
53
  for sent in doc.sents:
54
  sents.append(sent.text)
55
+
56
+ print(f"Tokenization completed. {len(sents)} sentences found.")
57
 
58
  return sents
59
 
 
99
  "knowledge_definition": knowledge_definition},
100
  )
101
 
102
+ def extract_tags(sents: str, tokenize = True) -> Results:
103
+
104
+ print("Extracting tags...")
105
+ print(f"Tokenizing {len(sents)} sentences...")
106
+
107
+ start_time = time.time()
108
 
109
  if tokenize:
110
+ tokens = [tokenizer.tokenize(t) for t in sents]
111
 
112
  prompt_and_model = prompt | model
113
  output = prompt_and_model.invoke({"input": tokens})
114
  output = parser.invoke(output)
115
+
116
+ time_taken = time.time() - start_time
117
+ print(f"Tags extracted in {time_taken} seconds.")
118
+
119
  return tokens, output
120
 
121
 
 
127
  # LLM-based tag extraction
128
  tokens, output = extract_tags(sents, tokenize=True)
129
 
130
+ with open(output_path, "w") as file:
131
  for entry in output['results']:
132
  json.dump(entry, file)
133
  file.write("\n")
134
 
135
+ def tag_all_today():
136
+
137
+ date = datetime.today().strftime('%d-%m-%Y')
138
+ date = "04-01-2025"
139
+
140
+ jobs = os.listdir(f'./job-postings/{date}')
141
+ output_path = f'./data/tags-{date}.jsonl'
142
+ count = 0
143
+
144
+ for job in tqdm(jobs, desc="Tagging job postings"):
145
+
146
+ job_path = f'./job-postings/{date}/{job}'
147
+
148
+ # Reading & sentence tokenization
149
+ sents = tokenize_to_sent(job_path)
150
+
151
+ # LLM-based tag extraction
152
+ tokens, output = extract_tags(sents, tokenize=True)
153
+
154
+ with open(output_path, "a") as file:
155
+ for entry in output['results']:
156
+ json.dump(entry, file)
157
+ file.write("\n")
158
+
159
+ count += 1
160
+ if count > 2:
161
+ break
162
+
163
+
164
+ print(f"Tagging completed. Output saved to {output_path}")
165
+
166
+
167
  if __name__ == "__main__":
168
 
169
+ tag_all_today()
 
 
plots/03-01-2024_2D_projection.png ADDED
plots/03-01-2024_3D_clustering.html ADDED
The diff for this file is too large to render. See raw diff
 
plots/03-01-2024_3D_projection.html ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt CHANGED
@@ -6,4 +6,6 @@ idna
6
  langchain_openai
7
  python-dotenv
8
  torch
9
- spacy
 
 
 
6
  langchain_openai
7
  python-dotenv
8
  torch
9
+ spacy
10
+ umap-learn
11
+ plotly
tag-posting.py CHANGED
@@ -215,6 +215,10 @@ def backfill():
215
 
216
  print(f"Saved skills to: {tag_path}")
217
 
 
 
 
 
218
  if __name__ == '__main__':
219
 
220
  # Backfill
@@ -224,4 +228,5 @@ if __name__ == '__main__':
224
  # path = './job-postings/03-01-2024/2.txt'
225
  # sents = parse_post(path)
226
  # skills = extract_skills(sents)
227
- # skills_save('./tags/03-01-2024/2.txt',skills)
 
 
215
 
216
  print(f"Saved skills to: {tag_path}")
217
 
218
+ def tag_date():
219
+
220
+ pass
221
+
222
  if __name__ == '__main__':
223
 
224
  # Backfill
 
228
  # path = './job-postings/03-01-2024/2.txt'
229
  # sents = parse_post(path)
230
  # skills = extract_skills(sents)
231
+ # skills_save('./tags/03-01-2024/2.txt',skills)RAPID_API_KEY : 60a10b11e6msh821d32f6e1e955ep15b5b1jsnf61a46680409
232
+ 1
tags/{03-01-2024 β†’ 03-01-2025}/1.txt RENAMED
File without changes
tags/{03-01-2024 β†’ 03-01-2025}/2.txt RENAMED
File without changes
tags/{03-01-2024 β†’ 03-01-2025}/3.txt RENAMED
File without changes
tags/{04-01-2024 β†’ 04-01-2025}/1.txt RENAMED
File without changes
tags/{04-01-2024 β†’ 04-01-2025}/2.txt RENAMED
File without changes
tags/{04-01-2024 β†’ 04-01-2025}/3.txt RENAMED
File without changes
train.py CHANGED
@@ -157,6 +157,14 @@ def train(json_path: str):
157
  # Log the artifact to W&B
158
  wandb.log_artifact(artifact)
159
 
 
 
 
 
 
 
 
 
160
  if __name__ == "__main__":
161
 
162
- train(json_path="./data/data.jsonl")
 
157
  # Log the artifact to W&B
158
  wandb.log_artifact(artifact)
159
 
160
+ def train_today():
161
+
162
+ date = datetime.today().strftime('%d-%m-%Y')
163
+ date = "04-01-2025"
164
+ json_path = os.path.join(os.getcwd(),f'data/tags-{date}.jsonl')
165
+ print(f"Training on {json_path}")
166
+ train(json_path=json_path)
167
+
168
  if __name__ == "__main__":
169
 
170
+ train_today()
vectorstore/03-01-2024_embeddings.npy ADDED
Binary file (860 Bytes). View file
 
vectorstore/03-01-2024_metadata.pkl ADDED
Binary file (1.28 kB). View file