2010-08-24 15 views
12

Todo el mundo sabe que si desea enhebrar correos electrónicos, utilice Jamie Zawinski's algorithm. Pero es un nuevo siglo, y hay un nuevo servicio de mensajería .¿Qué es un buen conjunto de heurísticas para enhebrar tweets?

¿Cuál es el mejor algoritmo para enhebrar las actualizaciones de estado publicado en Twitter?

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 here, por ejemplo.)

  • buenas heurísticas para inferir una relación "respuesta" de mensajes que mencionan a un usuario con la convención @ pero no son explícitamente en respuesta a un mensaje en particular. Estos "mencionan" are provided in the "entities" element of statuses now si lo solicita. Estas heurísticas podrían tener en cuenta (a) el tiempo entre dos actualizaciones de estado, (b) si existen respuestas subsquent entre los dos usuarios, etc. (Respuestas que constan de un retweet de estilo antiguo con un comentario adicional, como mentioned by user85509 below son sólo una instancia de este tipo de respuesta.)

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

  • Trabajando con un conjunto de tweets dados al algoritmo, o todos los tweets en Twitter.

... pero quizás se te ocurra pensar en más.

Respuesta

5

Como solo 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 para que la recompensa no se otorgue automáticamente a una respuesta que no agregue mucho más de lo que está en la pregunta.

El primer paso obvio es tomar su conjunto original de tweets y seguir todas las in_reply_to_status_id enlaces para construir muchos gráficos acíclicos dirigidos. Estas relaciones pueden estar casi 100% seguras. (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 " menciona ". A diferencia del enhebrado de correo electrónico, no hay nada útil como una línea de asunto en la que uno pueda coincidir: esto es , inevitablemente va a ser muy propenso a errores. El enfoque que tomaría es crear un vector de características para cada relación posible entre los ID de estado que podrían representarse mediante menciones en ese tweet, y luego entrenar a un clasificador para adivinar la mejor opción, incluida la opción "sin respuesta".

Para calcular el bit de "todas las relaciones posibles", comience 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 tuits es:

@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 durante la última semana (por ejemplo) y uno entre esa actualización y una actualización especial "sin respuesta". 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:

  • El tiempo transcurrido entre las dos actualizaciones - presumiblemente respuestas son más propensos a ser actualizaciones recientes.
  • La proporción del camino a través del tweet 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 probablemente sea más probable que indique una respuesta que la mencionada más adelante en la actualización.
  • La cantidad de seguidores del mencionado usuario: las celebridades son supuestamente más propensas a ser mencionadas como spam.
  • La longitud de la subcadena común más larga entre las actualizaciones, que puede indicar cotizaciones directas.
  • ¿La mención está precedida por "/ cc" u otros significantes que indiquen que no se trata de una respuesta directa a esa persona?
  • Proporción following/followed para el autor de la actualización original.
  • etc.
  • etc.

El más puede llegar con el mejor, ya que el clasificador sólo utilizará los que resultan ser útiles estos uno. Sugeriría probar un clasificador random forest, que está implementado convenientemente en Weka.

Siguiente uno necesita un conjunto de entrenamiento. Esto puede ser pequeño al principio, solo lo suficiente para obtener un servicio que identifique las conversaciones en funcionamiento. Para este servicio básico, uno debería agregar una interfaz agradable para corregir actualizaciones mal emparejadas o vinculadas falsamente, para que los usuarios puedan corregirlas. Usando estos datos uno puede construir un conjunto de entrenamiento más grande y un clasificador más preciso.

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

0

En Twitter, las personas suelen escribir "RT" delante del mensaje al que responden.

+3

Un RT no es una respuesta, que es un "Retweet". Simplemente significa que estás repitiendo lo que dijo otra persona, seguido de una atribución. –

+1

En mi experiencia, se usa para ambos. La gente suele usar el formato " RT <@name>" para sus respuestas. – user85509

Cuestiones relacionadas