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;)
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. –
En mi experiencia, se usa para ambos. La gente suele usar el formato " RT <@name>" para sus respuestas. –
user85509