2016-10-10 5 views
0

Какой алгоритм машинного обучения послужит отправной точкой для проблемы ниже?Кластеризация слов на основе сходства по смыслу, который предоставляется в наборах тренировок

У меня есть список слов, аналогичный приведенному ниже.

викарий: член духовенства в некоторых церквях (например, англиканской церкви), который помогает священнику во главе церкви или группы церквей

дворник: лицо, занятое сделать наружные работы (как кошение газонов)

и другие нормальные слова.

Я хочу, чтобы новое слово принадлежало нашей категории (название работы) или не было основано на их значении.

Например:

  • медсестра: 1
  • Учитель: 1
  • плавание: 0
  • пловец: 1
  • Ведущий: 1
  • игры: 0
  • 1-fit в нашу категорию
  • 2-не относится к категории.

Я использую python как инструмент для реализации цели машинного обучения.

ответ

0

Это проблема текстового сходства, где вы хотите совместить подобие данного блока текста с известным набором. Например, «медсестра: человек, работающий в сфере здравоохранения ...». Если подобие выше определенного порога, тогда существует совпадение, иначе считается, что оно не соответствует.

Для начала вам понадобится какое-то представление для текста, чтобы вы могли выполнить сравнение. Некоторые распространенные текстовые представления:

  • мешок слов имп/Слово (см TF-IDF)
  • вложения Word (см Word2Vec)

С 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).

+0

Да, слово будет состоять из значений, так как было бы легко сформировать математическую проблему. – Analystanand