Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
ipynb - Colab
TalentCLEF is an initiative to advance Natural Language Processing (NLP) in Human Capital Management (HCM). It aims to create a public
benchmark for model evaluation and promote collaboration to develop fair, multilingual, and flexible systems that improve Human Resources
(HR) practices across different industries.
This shared-task's inaugural edition is part of the Conference and Labs of the Evaluation Forum (CLEF), scheduled to be held in Madrid in
2025. If you are interested in registering, you can find registration form here.
keyboard_arrow_down Imports
!pip install pandas numpy sentence-transformers codecarbon
https://colab.research.google.com/drive/1fxi6dchzMWct_JemIiarbCCRa0Wh8A5T?usp=sharing#printMode=true 1/5
25/03/2025, 22:03 Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
import json
import pandas as pd
import numpy as np
from sentence_transformers import SentenceTransformer, util
from codecarbon import EmissionsTracker
# Download
!wget https://zenodo.org/records/14879510/files/TaskA.zip
Archive: TaskA.zip
creating: taskA/test/
creating: taskA/training/
creating: taskA/training/english/
inflating: taskA/training/english/taskA_training_en.tsv
creating: taskA/training/spanish/
inflating: taskA/training/spanish/taskA_training_es.tsv
creating: taskA/training/german/
inflating: taskA/training/german/taskA_training_de.tsv
creating: taskA/validation/
creating: taskA/validation/chinese/
inflating: taskA/validation/chinese/corpus_elements
inflating: taskA/validation/chinese/queries
inflating: taskA/validation/chinese/qrels.tsv
creating: taskA/validation/english/
inflating: taskA/validation/english/corpus_elements
inflating: taskA/validation/english/queries
inflating: taskA/validation/english/qrels.tsv
creating: taskA/validation/german/
inflating: taskA/validation/german/corpus_elements
inflating: taskA/validation/german/queries
inflating: taskA/validation/german/qrels.tsv
creating: taskA/validation/spanish/
inflating: taskA/validation/spanish/corpus_elements
inflating: taskA/validation/spanish/queries
inflating: taskA/validation/spanish/qrels.tsv
keyboard_arrow_down Baseline
Define language directionalities (queries-documents):
language_pairs = ["de-de","es-es","en-en","zh-zh"]
languages = ["german","spanish","english","chinese"]
models = ["sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"]
import os
if os.path.exists('/tmp/.codecarbon.lock'):
os.remove('/tmp/.codecarbon.lock')
emissions = {}
https://colab.research.google.com/drive/1fxi6dchzMWct_JemIiarbCCRa0Wh8A5T?usp=sharing#printMode=true 2/5
25/03/2025, 22:03 Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
tracker.start_task(model_name)
# Download and load embedding model
model = SentenceTransformer(model_name)
for language_pair,language in zip(language_pairs,languages):
# Read queries and corpus elements for the specific language
queries = f"/content/taskA/validation/{language}/queries"
corpus_elements = f"/content/taskA/validation/{language}/corpus_elements"
queries = pd.read_csv(queries,sep="\t")
corpus_elements = pd.read_csv(corpus_elements, sep="\t")
# Get ids, strings and generate a mapping dictionary for queries
queries_ids = queries.q_id.to_list()
queries_texts = queries.jobtitle.to_list()
map_queries = dict(zip(queries_ids,queries_texts))
# Get ids, strings and generate a mapping dictionary for corpus elements
corpus_ids = corpus_elements.c_id.to_list()
corpus_texts = corpus_elements.jobtitle.to_list()
map_corpus = dict(zip(queries_ids,queries_texts))
# Encode queries and corpus elements with the baseline model.
query_embeddings = model.encode(queries_texts, convert_to_tensor=True)
corpus_embeddings = model.encode(corpus_texts, convert_to_tensor=True)
Zip the results that will be uploaded into the Task A Codabench
keyboard_arrow_down Evaluation:
!git clone https://github.com/TalentCLEF/talentclef25_evaluation_script.git
!pip install -r /content/talentclef25_evaluation_script/requirements.txt
https://colab.research.google.com/drive/1fxi6dchzMWct_JemIiarbCCRa0Wh8A5T?usp=sharing#printMode=true 3/5
25/03/2025, 22:03 Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests>=2.22.0->ir-datasets->ranx->
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests>=2.22.0->ir-datasets->
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests>=2.22.0->ir-datasets->
Collecting cbor>=1.0.0 (from trec-car-tools>=2.5.4->ir-datasets->ranx->-r /content/talentclef25_evaluation_script/requirements.txt
Downloading cbor-1.0.0.tar.gz (20 kB)
Preparing metadata (setup.py) ... done
Downloading ranx-0.3.20-py3-none-any.whl (99 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 99.3/99.3 kB 4.2 MB/s eta 0:00:00
Downloading cbor2-5.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 249.2/249.2 kB 10.4 MB/s eta 0:00:00
Downloading fastparquet-2024.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 49.3 MB/s eta 0:00:00
Downloading ir_datasets-0.5.10-py3-none-any.whl (859 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 859.0/859.0 kB 40.5 MB/s eta 0:00:00
Downloading lz4-4.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 46.3 MB/s eta 0:00:00
Downloading ijson-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (119 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 119.2/119.2 kB 7.7 MB/s eta 0:00:00
Downloading inscriptis-2.6.0-py3-none-any.whl (45 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.1/45.1 kB 2.6 MB/s eta 0:00:00
Downloading trec_car_tools-2.6-py3-none-any.whl (8.4 kB)
Downloading unlzw3-0.2.3-py3-none-any.whl (6.7 kB)
Downloading warc3_wet-0.2.5-py3-none-any.whl (18 kB)
Downloading zlib_state-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21 kB)
Building wheels for collected packages: warc3-wet-clueweb09, cbor
Building wheel for warc3-wet-clueweb09 (setup.py) ... done
Created wheel for warc3-wet-clueweb09: filename=warc3_wet_clueweb09-0.2.5-py3-none-any.whl size=18920 sha256=81a9a15b7d3c612c3df
Stored in directory: /root/.cache/pip/wheels/63/f9/dc/2dd16d3330e327236e4d407941975c42d5159d200cdb7922d8
Building wheel for cbor (setup.py) ... done
Created wheel for cbor: filename=cbor-1.0.0-cp311-cp311-linux_x86_64.whl size=53931 sha256=94db066ac88cd83ebeabeb4a93013f7df2096
Stored in directory: /root/.cache/pip/wheels/21/6b/45/0c34253b1af07d1d9dc524f6d44d74a6b191c43152e6aaf641
Successfully built warc3-wet-clueweb09 cbor
Installing collected packages: warc3-wet-clueweb09, warc3-wet, ijson, cbor, zlib-state, unlzw3, trec-car-tools, lz4, cbor2, inscri
Successfully installed cbor-1.0.0 cbor2-5.6.5 fastparquet-2024.11.0 ijson-3.3.0 inscriptis-2.6.0 ir-datasets-0.5.10 lz4-4.4.3 ranx
Then, select the Qrels file and the Run file to perform the evaluation.
For English:
qrels_file = "/content/taskA/validation/english/qrels.tsv"
run_file = "/content/run_en-en_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec"
import subprocess
command = ["python", "/content/talentclef25_evaluation_script/talentclef_evaluate.py", "--qrels", qrels_file, "--run", run_file]
result = subprocess.run(command, capture_output=True, text=True)
print(result.stdout)
Received parameters:
qrels: /content/taskA/validation/english/qrels.tsv
run: /content/run_en-en_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec
Loading qrels...
Loading run...
Running evaluation...
For Spanish:
qrels_file = "/content/taskA/validation/spanish/qrels.tsv"
run_file = "/content/run_es-es_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec"
import subprocess
command = ["python", "/content/talentclef25_evaluation_script/talentclef_evaluate.py", "--qrels", qrels_file, "--run", run_file]
result = subprocess.run(command, capture_output=True, text=True)
print(result.stdout)
Received parameters:
qrels: /content/taskA/validation/spanish/qrels.tsv
run: /content/run_es-es_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec
Loading qrels...
Loading run...
Running evaluation...
https://colab.research.google.com/drive/1fxi6dchzMWct_JemIiarbCCRa0Wh8A5T?usp=sharing#printMode=true 4/5
25/03/2025, 22:03 Copy of TalentCLEF_TaskA_DevSet_Baseline.ipynb - Colab
mrr: 0.5446
ndcg: 0.6980
precision@5: 0.6076
precision@10: 0.5730
precision@100: 0.2118
For German:
qrels_file = "/content/taskA/validation/german/qrels.tsv"
run_file = "/content/run_de-de_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec"
import subprocess
command = ["python", "/content/talentclef25_evaluation_script/talentclef_evaluate.py", "--qrels", qrels_file, "--run", run_file]
result = subprocess.run(command, capture_output=True, text=True)
print(result.stdout)
Received parameters:
qrels: /content/taskA/validation/german/qrels.tsv
run: /content/run_de-de_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec
Loading qrels...
Loading run...
Running evaluation...
For Chinese:
qrels_file = "/content/taskA/validation/chinese/qrels.tsv"
run_file = "/content/run_zh-zh_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec"
import subprocess
command = ["python", "/content/talentclef25_evaluation_script/talentclef_evaluate.py", "--qrels", qrels_file, "--run", run_file]
result = subprocess.run(command, capture_output=True, text=True)
print(result.stdout)
Received parameters:
qrels: /content/taskA/validation/chinese/qrels.tsv
run: /content/run_zh-zh_devbaseline-paraphrase-multilingual-MiniLM-L12-v2.trec
Loading qrels...
Loading run...
Running evaluation...
https://colab.research.google.com/drive/1fxi6dchzMWct_JemIiarbCCRa0Wh8A5T?usp=sharing#printMode=true 5/5