Это вопрос машинного обучения. Вы пытаетесь изучить модель на основе контролируемых данных. Для этого вы можете запустить простой алгоритм, такой как Perceptron или SampleRank ( pdf ):
Сначала вы определяете особенности, которые применяются к словам в слогане. Функции могут быть разделены между словами, например, Особенности слова "мир" могут быть:
- "мир",
- "существительное",
- "абстрактный-существительное",
- "короткое существительное",
- "начинается с p",
- "оканчивается на 's'-звук",
- ...
Первая функция «мир» - это уникальная функция, которая срабатывает только на «мире», тогда как другие функции могут срабатывать и на других словах.
Каждая функция имеет вес (чем выше, тем лучше). Таким образом, у вас есть вектор признаков и вектор весов. Это позволит вам присвоить вес (оценку) любому слогану (просто сумму всех взвешенных функций, которые включаются в слова в слогане). Все веса инициализируются до 0,0.
Теперь вы начинаете тренироваться:
Вы перебираете все пары лозунгов. Для каждой пары вы знаете истинный рейтинг (согласно уже имеющимся у вас голосам). Затем вы вычисляете рейтинг в соответствии с функциями и их текущим весом. Если истинное ранжирование и ранжирование в соответствии с вашими текущими характеристиками (то есть в соответствии с вашей текущей моделью) совпадают, вы просто переходите к следующей паре. Если вашей модели присвоено неправильное ранжирование, вы исправляете веса объектов: вы добавляете 1,0 к весам функций, которые запускаются в лучшем слогане (тот, который лучше по мнению людей) и вычитаете 1,0 из весов функций, которые запускают на худшем лозунге (его оценка была явно слишком высокой, поэтому вы понижаете его сейчас). Эти обновления веса влияют на оценки, которые ваша модель присваивает следующим парам и т. Д.
Вы запускаете этот цикл несколько раз, пока ваша модель не получит правильное большинство пар (или какой-либо другой критерий сходимости).
Как правило, вы на самом деле не прибавляете и не вычитаете 1,0, а eta times 1.0, где eta - скорость обучения, которую вы можете установить экспериментально. Как правило, оно выше в начале тренировки и постепенно снижается во время тренировки, поскольку ваши веса движутся в правильном направлении. (См. Также случайный градиентный спуск.) Чтобы начать, вы можете просто установить его на 0,1 в качестве константы.
Эта процедура заботится о стоп-словах ("the", "of", ...), поскольку они должны встречаться одинаково часто в хороших и плохих лозунгах (и если они действительно не будут, вы тоже это узнаете) .
После тренировки вы можете вычислить оценку для каждого слова в соответствии с изученными весами признаков.