Pregunta

Todo el mundo sabe, si quiere hilo mensajes de correo electrónico que utiliza Jamie algoritmo de Zawinski. Pero se trata de un nuevo siglo, y hay una nuevo servicio de mensajería.

¿Cuál es el mejor algoritmo para el roscado de las actualizaciones de estado publicada el Twitter?

Las cosas definitivamente me gustaría que para hacer frente a:

  • La parte fácil: usando in_reply_to_status_id, in_reply_to_user_id y in_reply_to_screen_name. (Por cierto, la búsqueda de la documentación apropiada de estos valores sería útil en sí mismo! Dicha documentación no es obviamente vinculado a partir de aquí , por ejemplo.)

  • Las buenas heurísticas para inferir una "respuesta" relación de mensajes que mencionan a un usuario con la convención @ pero no están explícitamente en responder a un mensaje en particular. Estas "Menciones" están dentro de las "entidades" elemento de Estatus de ahora si solicita que. Estas heurísticas podrían tener en cuenta (a) el tiempo entre dos actualizaciones de estado, (b) si hay respuestas subsquent entre los dos usuarios, etc. (Respuestas que constan de un retweet de estilo antiguo con una comentario adicional, como mencionado por user85509 a continuación son sólo una instancia de este tipo de respuesta.)

  • conversaciones que tienen lugar entre más de dos usuarios.

  • Trabajo con un conjunto de tweets dado al algoritmo, o todos tweets en Twitter.

... pero tal vez usted puede pensar en más.

¿Fue útil?

Solución

Dado que no solamente ha habido una respuesta, y la fecha límite de recompensas se acerca pronto, pensé que debería agregar una respuesta de línea de base por lo que la recompensa no se concede automáticamente a una respuesta que no agrega mucho más allá de lo que está en la pregunta.

El primer paso obvio es tomar su conjunto original de tweets y seguir todos los enlaces in_reply_to_status_id para construir muchos gráficos acíclicos dirigidos. Estas relaciones pueden ser casi 100% seguro. (Debe seguir los enlaces incluso a través de los tweets que no están en el conjunto original, añadiendo los que el conjunto de cambios de estado que está considerando.)

Más allá de eso solo paso, uno tiene que ver mucho con el "menciones". A diferencia de en el roscado de correo electrónico, no hay nada útil como una línea de asunto que puede igualar en - esto es inevitablemente va a ser muy propenso a errores. El enfoque me gustaría tener es crear un vector de características para cada posible relación entre los identificadores de estado que pueden estar representados por menciones en ese tweet, y luego entrenar a un clasificador de adivinar la mejor opción, una opción de "no respuesta".

Para calcular el bit "cada posible relación", empezar por considerar cada actualización de estado que menciona a uno o más usuarios y no contiene un in_reply_to_status_id. Supongamos un ejemplo de uno de estos mensajes de twitter es: 1

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

... Para ello se crea un vector de características de la relación entre esta actualización y cada actualización con una fecha anterior en las líneas de tiempo de @a, @b, @c y @stephenfry para la última semana (por ejemplo) y otro entre esa actualización y un especial de "no respuesta" actualización. Entonces usted tiene que crear un vector de características - se puede añadir a esto lo que le guste, pero yo al menos sugerir la adición de:

  • El tiempo transcurrido entre las dos actualizaciones -. Presumiblemente respuestas son más propensos a ser a cambios recientes
  • La proporción de la forma a través de la pío en términos de palabras que se produce una mención. p.ej. si esta es la primera palabra, esta sería una puntuación de 0 y que probablemente es más probable que indican una respuesta que se menciona más adelante en la actualización.
  • El número de seguidores del usuario mencionado -. Celebridades son presumiblemente más probable que sean spam mencionado
  • La longitud de la subcadena común más larga entre las actualizaciones, lo que podría indicar directa citando.
  • ¿Es la mención precedido por "/ cc" u otros significantes que indican que esto no es una respuesta directa a esa persona?
  • La relación following / followed para el autor de la actualización original.
  • etc.
  • etc.

Los más de estos se puede llegar con el mejor, ya que el clasificador sólo utilizará los que llegar a ser útil. Yo sugeriría tratando clasificador una azar forestal , que se realiza convenientemente en Weka .

A continuación se necesita un conjunto de entrenamiento. Esto puede ser pequeño al principio - lo suficiente como para obtener un servicio que identifica conversaciones hasta y funcionando. Para este servicio básico, habría que añadir una interfaz agradable para corregir cambios no coinciden o falsamente vinculados, de modo que los usuarios puedan corregirlos. El uso de estos datos nos puede construir una más grande conjunto de entrenamiento y un clasificador más precisa.

1 ... que podría ser típico del nivel de discurso en Twitter;)

Otros consejos

En Twitter, la gente suele escribir "RT" frente al mensaje que están respondiendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top