Это проблема текстового сходства, где вы хотите совместить подобие данного блока текста с известным набором. Например, «медсестра: человек, работающий в сфере здравоохранения ...». Если подобие выше определенного порога, тогда существует совпадение, иначе считается, что оно не соответствует.
Для начала вам понадобится какое-то представление для текста, чтобы вы могли выполнить сравнение. Некоторые распространенные текстовые представления:
С TF-IDF, предложения для каждого описания задания преобразуются в вектор отсчетов, причем длина вектора равна размеру словаря для всех слов во всех описаниях должностных обязанностей. С Word2Vec каждое слово рассматривается как вектор определенного размера, который представляет контекст слова в учебном корпусе. Вы можете либо продать свою собственную модель Word2Vec в своих данных, либо использовать pretrained model. Вам нужно будет совместить векторы для каждого предложения самостоятельно, чтобы сопоставить описания работы. Легким первым шагом является усреднение всех векторов слов, но вы также можете попробовать Doc2Vec (см. here).
Наконец, вам понадобится функция расстояния, чтобы сравнить два представления. Для TF-IDF cosine similarity является довольно стандартным. Для Word2Vec, вы можете использовать euclidean distance или даже расстояние СЛОВОМ движителя в (ВРС см here снова)
Собираем все вместе на высоком уровне, вы хотите сделать что-то вроде следующего:
trainingWords = {}
trainingWords['gardener'] = 'a person who tends a garden...'
trainingWords['valet'] = 'A person who parks a car...'
trainingVectors = {}
for (category in trainingWords):
trainingVectors[category] = convert(trainingWords[category])
newWord = 'nurse'
newDescription = 'A person working in healthcare...'
newVector = convert(newDescription)
threshold = <some number>
output = {}
for (category in trainingVectors):
if (distance(newVector, trainingVector[category]) < threshold):
output[category] = 1
else:
output[category] = 0
print output
Этом предполагает, что у вас есть функция преобразования, которая преобразует необработанный текст в одну из переориентаций, упомянутых ранее, расстояние функции, которое ранее использовала функция расстояния между пользователями, и порог, соответствующий вашей проблеме и функции расстояния. Например, сходство косинусов использует значения в диапазоне от 0 до 1, поэтому вам нужно будет выбрать порог для того, что считается совпадением (например, 0,85).
Да, слово будет состоять из значений, так как было бы легко сформировать математическую проблему. – Analystanand