Подтвердить что ты не робот

Какая хорошая эвристика для прошивки твитов?

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Очевидный первый шаг - взять ваш оригинальный набор твитов и следовать всем ссылкам 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... который может быть типичным для уровня дискурса в Twitter;)

Ответ 2

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