Альтернативой пользовательским словарям и справочникам является создание набора данных, в котором вы назначаете каждому слову соответствующую метку. Вы можете определить набор меток (например, {OTHER, SKILL}) и создать набор данных с примерами, такими как:
I OTHER
can OTHER
program OTHER
in OTHER
Python SKILL
. OTHER
И с достаточно большим набором данных вы обучаете модель прогнозированию соответствующей метки.
Вы можете попытаться получить список синонимов "языка кодирования" (или конкретные навыки, которые вы ищете) из вложений слов, обученных в вашем CV, и использовать эту информацию для автоматической маркировки других корпусов. Я бы сказал, что ключевой момент заключается в том, чтобы найти способ хотя бы частично автоматизировать маркировку, иначе у вас не будет достаточно примеров для обучения модели выполнению пользовательской задачи NER. Используйте такие инструменты, как https://prodi.gy/, которые уменьшают затраты на маркировку.
В качестве функций вы также можете использовать вложения слов (или другие типичные функции NLP, такие как n-граммы, тег POS и т. Д. c . в зависимости от используемой модели)
Еще один вариант - применить обучение переноса из других моделей NER / NLP и настроить их в своем наборе данных, помеченном CV.
Я бы приложил больше усилий для создания правильный набор данных, а затем постепенно тестируйте более сложные модели, выбирая то, что лучше всего соответствует вашим потребностям.