Какой хороший набор эвристик для создания твитов? - PullRequest
14 голосов
/ 24 августа 2010

Все знают, если вы хотите, чтобы темы электронной почты вы используете Джейми Алгоритм Завинского . Но это новый век, и есть новый сервис обмена сообщениями.

Какой лучший алгоритм для обновления сообщений о статусах Twitter

Вещи, с которыми я бы определенно хотел справиться:

  • Легкая часть: использование in_reply_to_status_id, in_reply_to_user_id и in_reply_to_screen_name. (Кстати, найти правильную документацию этих значений было бы полезно само по себе! Такой документации нет очевидно, связано с от здесь , например.)

  • Хорошая эвристика для вывода отношения "ответа" из сообщения, которые упоминают пользователя с соглашением @, но не являются явно в ответ на конкретное сообщение. Эти «Упоминания» предоставляются в элементе «entity» статусы сейчас если вы попросите это. Эта эвристика может принять учетная запись (а) время между двумя обновлениями статуса, (б) ли есть регулярные ответы между двумя пользователями и т. д. (Ответы, которые состоят из ретвита старого стиля с дополнительный комментарий, как упомянутый пользователем85509 ниже просто пример такого стиля ответа.)

  • Разговоры между более чем двумя пользователями.

  • Работа с набором твитов, заданных алгоритмом, или со всеми твиты в твиттере.

... но, возможно, вы можете думать о большем.

Ответы [ 2 ]

6 голосов
/ 28 марта 2011

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

Очевидный первый шаг - взять исходный набор твитов и следовать всем ссылкам in_reply_to_status_id, чтобы построить множество направленных ациклических графов.В этих отношениях вы можете быть почти на 100% уверены.(Вы должны переходить по ссылкам даже через твиты, которых нет в исходном наборе, добавляя их в набор обновлений статуса, который вы рассматриваете.)

Помимо этого простого шага, приходится иметь дело с"упоминания".В отличие от потоков электронной почты, нет ничего полезного, как строка темы, с которой можно сопоставить - это неизбежно будет очень подвержен ошибкам.Подход, который я выбрал бы, состоит в том, чтобы создать вектор признаков для каждого возможного отношения между идентификаторами состояния, которые могут быть представлены упоминаниями в этом твите, а затем обучить классификатор, чтобы угадать лучший вариант, включая параметр «без ответа».

Чтобы определить бит «всевозможные отношения», начните с рассмотрения каждого обновления статуса, в котором упоминается один или несколько других пользователей и которое не содержит in_reply_to_status_id.Предположим, что примером одного из этих твитов является: 1

@a @b no it isn't lol  RT @c Yes, absolutely. /cc @stephenfry

... вы бы создали вектор объектов для связи между этим обновлением и каждым обновлением с более ранней датой ввременные шкалы @a, @b, @c и @stephenfry для последней недели (скажем) и промежутка времени между этим обновлением и специальным обновлением «без ответа».Затем вам нужно создать вектор объектов - вы можете добавить к этому все, что захотите, но я бы по крайней мере предложил добавить:

  • Время, прошедшее между двумя обновлениями - предположительно ответы более вероятныбыть в последние обновления.
  • Доля пути через твит в терминах слов, которые упоминаются.например, если это первое слово, это будет оценка 0, и это, скорее всего, будет означать ответ, чем упомянуто позже в обновлении.
  • Количество подписчиков упомянутого пользователя - знаменитости, вероятно, большескорее всего упоминается как спам.
  • Длина самой длинной общей подстроки между обновлениями, которая может указывать на прямое цитирование.
  • Указание, которому предшествует "/ cc" или другие обозначения, которые указываютчто это не прямой ответ этому человеку?
  • Коэффициент following / followed для автора оригинального обновления.
  • и т. д.
  • и т. д.

Чем больше из них можно придумать, тем лучше, поскольку классификатор будет использовать только те из них, которые окажутся полезными.Я бы предложил попробовать классификатор random forest , который удобно реализован в Weka .

Далее необходим обучающий набор.Сначала это может быть небольшим - достаточно, чтобы получить сервис, который идентифицирует разговоры и работает.К этой базовой услуге нужно было бы добавить хороший интерфейс для исправления несоответствующих или ложно связанных обновлений, чтобы пользователи могли их исправлять.Используя эти данные, можно создать больший обучающий набор и более точный классификатор.

1 ..., что может быть типичным для уровня дискурса в Твиттере;)

0 голосов
/ 24 августа 2010

В Твиттере люди часто пишут «RT» перед сообщением, на которое они отвечают.

...