Terminología
A los fines de esta respuesta, abreviaré la oración “Eso es lo que ella dijo” como TWSS , me referiré a oraciones para las cuales TWSS es una respuesta apropiada (es decir, las oraciones que estamos interesados en clasificar) como indicaciones , y lo haré consulte la tarea en cuestión como el problema TWSS .
Datos de entrenamiento
El primer paso es recoger un corpus de entrenamiento. En mi opinión, la mejor fuente de datos para este problema es probablemente Twitter por las siguientes razones:
- Las relaciones TWSS-prompt están estructuradas. Es muy fácil identificar mensajes porque los tweets @ -responden están vinculados a los tweets a los que están respondiendo. [1] Estas son precisamente las oraciones que desea formar su conjunto de entrenamiento. En el caso de que aparezca un TWSS en el medio de un tweet sin respuesta, generalmente puede suponer que el texto que lo precede en el mismo tweet es el indicador.
- Es actual. La mayoría de los corpus de texto existentes son lo suficientemente antiguos como para que sea poco probable que TWSS aparezca con la suficiente frecuencia como para observar cualquier patrón de uso. [2] Además, Twitter es más coloquial y conversacional que la mayoría de los otros corpus de texto, que utilizan en gran medida documentos más formales como artículos de noticias. Una excepción que se me ocurre es el corpus Switchboard, que consiste en transcripciones de aproximadamente 2000 conversaciones telefónicas [3]; sin embargo, probablemente tampoco funcionará para una tarea que involucre TWSS debido a su edad (principios de los 90, ¿es lo suficientemente tarde?).
- Es enorme. Hay una gran cantidad de datos disponibles, y está creciendo todo el tiempo.
Otra opción sería utilizar un corpus reciente de transcripciones de mensajes instantáneos , pero no conozco ninguna que esté disponible públicamente o sea de fácil acceso. [4] Si usó un corpus de mensajes instantáneos, no podría identificar el mensaje con la mayor precisión posible con Twitter, pero si incluye algunos de los mensajes que preceden inmediatamente a la aparición de TWSS, creo que debería ser suficiente. (El número exacto de mensajes anteriores a incluir probablemente dependerá de la inspección manual de los datos para una elección prima facie o de la experimentación con un número creciente que cesa cuando comienza a ver caídas precipitadas en la precisión).
No estoy de acuerdo con la respuesta de Ryan Waliany de que Wikipedia sería un buen corpus para usar. TWSS no solo aparece raramente en toda Wikipedia, sino que es mucho más difícil saber cuál es el aviso para cualquier aparición dada de TWSS debido a la naturaleza en prosa de Wikipedia. Además, debido a que Wikipedia es enciclopédica, probablemente tiene algunas oraciones formales artificiales que contienen palabras que nunca vería cerca de un TWSS en un contexto de conversación, por ejemplo:
“Eso es lo que dijo”, abreviado ocasionalmente como TWSS, es una frase principalmente estadounidense y canadiense utilizada en respuesta a un doble sentido accidental, especialmente uno de naturaleza sexual. Por lo general, ‘TWSS’ se dice en respuesta al doble sentido de otro hablante, y rara vez por el hablante original. [5]
Las desventajas de usar Twitter como la fuente principal de datos de capacitación son:
- No se pueden usar avisos de más de 140 caracteres para entrenar. Si esto importa mucho depende de cuánto tiempo los TWSS tienden a estar en libertad y de las características en las que elegimos entrenar (por ejemplo, un modelo entrenado en árboles de frases probablemente no lidiará bien con un conjunto de mensajes que son más largos que ninguno en el conjunto de entrenamiento, mientras que un modelo entrenado en bolsa de palabras seguirá funcionando bien), pero creo que incluso si el rendimiento sufre por mensajes con más de 140 caracteres, es una buena compensación para obtener un modelo trabajando.
- Tendrá que pasar tiempo limpiando los datos. Aunque la relación entre las indicaciones y TWSSes es bastante clara, es muy probable que los tweets en sí mismos no estén bien formados en inglés. Asumiendo que lo que está intentando clasificar al final es una oración en inglés bien formada, seguramente querrá eliminar todos los “lol”, “lmao”, etc., ya que a menudo aparecen en relación con TWSS tweets pero no lo haría en ninguna de las oraciones de prueba. También hay una gran cantidad de texto hablado [6] y errores ortográficos.
- Malas bromas. La gente piensa que son divertidos, pero a veces sus bromas simplemente no tienen sentido. [7] Si todas nuestras indicaciones de entrenamiento fueron malas bromas de TWSS, entonces el clasificador resultante no funcionará muy bien de acuerdo con lo que me gustaría pensar que son estándares de humor más refinados. Tal vez podamos arrancar un conjunto de mensajes comenzando con un conjunto inicial de mensajes extraídos de las mejores listas de chistes de TWSS y encontrando usuarios que respondieron con TWSS a mensajes similares [8], y luego encontrando otros tweets a los que esa persona respondió TWSS con e iterando. Esto probablemente tomará mucho tiempo, a menos que tengamos suerte y nos encontremos con varios fanáticos de TWSS a quienes les gusta dejar una buena broma de TWSS cada vez que tienen la oportunidad. Sin embargo, tal vez valga la pena: no lo sé sin inspeccionar manualmente los datos que obtendríamos de lo contrario.
Nuestro conjunto de capacitación también debe incluir oraciones que no sean buenas indicaciones TWSS. Idealmente, el conjunto de entrenamiento tendría avisos y oraciones no rápidas en aproximadamente la proporción en que aparecen en la naturaleza, pero esto puede no ser factible o manejable, en cuyo caso podemos usar muestreo controlado por caso en combinación con un método de aprendizaje compatible .
Método de aprendizaje y características
Honestamente, creo que algo tan simple como entrenar a un clasificador Naive Bayes con un modelo de bolsa de palabras lo llevará a la mayor parte del camino. La mayoría de las indicaciones de TWSS se caracterizan por el uso de un pequeño conjunto de fichas que ofrecen doble sentido, como rígido , duro , largo , grande , pequeño , pegar , perforar , encajar , comer , chupar , lamer , montar , golpear , venir (y variaciones de las mismas). , por ejemplo, vino , semen y viene ), golpe , boca , manos y apretón . La inclusión de cualquiera de estas palabras en una oración generalmente es suficiente para convertirla en un aviso razonable, incluso si otras palabras tienen poco que ver con insinuaciones sexuales. Si su conjunto de datos es lo suficientemente grande, estoy dispuesto a apostar que suficientes avisos encajarán en esta categoría para que la capacitación sea puramente en apariencias de unigrama (menos palabras de detención) una solución satisfactoria. Si resulta que este no es el caso, es trivial encontrarse con bigrams y trigrams para mejorar la sensibilidad al contexto , aunque esto puede reducir nuestra percepción del recuerdo del clasificador.
¿Por qué podría bajar el recuerdo percibido? Bueno, un efecto secundario interesante de toda esta empresa es que cualquier clasificador que cree inevitablemente terminará creando nuevos chistes TWSS . Piénselo: la naturaleza de los chistes de TWSS es inventar nuevos significados originalmente no intencionados, por lo que hacer que uno requiera que el significado del aviso contenga un pequeño margen de ambigüedad. Una gran cantidad de oraciones que no son TWSSed en realidad serían buenas bromas TWSS. Por lo tanto, si bien nuestro modelo puede clasificar correctamente una oración “no puntual” en nuestro conjunto de pruebas como un indicador, podemos mirarla y pensar para nosotros mismos: “Bueno, en realidad, ¡sería una gran broma después de todo!” Como resultado, podría ser una buena idea optar por un mejor recuerdo a expensas de la precisión, ya que nuestro conjunto de pruebas podría etiquetar algunas buenas indicaciones como no avisos solo porque nadie había sido lo suficientemente inteligente como para responder a ellas con TWSS .
Sin embargo, si no nos preocupa este problema, entonces una buena opción para un enfoque más complejo con potencial para una mayor precisión serían conjuntos de árboles de decisión , que aún se ejecutarán de manera bastante eficiente a pesar del gran espacio de características, aunque definitivamente necesita aplicar algunas podas para deshacerse de lo que seguramente será una gran cantidad de características irrelevantes. También podría intentar usar máquinas de vectores de soporte, pero tomaría una maldita ejecución para siempre. Una posible estrategia es reducir el espacio de características mediante el uso de técnicas más baratas como Naive Bayes o el árbol de decisiones para aprender a encontrar un conjunto de características que sean altamente indicativas de indicaciones y luego usar solo esas características para el SVM. También puede obtener un conjunto de características reducido ejecutando un tf-idf rápido en las solicitudes frente a las que no lo son.
Yendo más allá del simple uso de n-gramas como características, también pensé en usar etiquetas POS (parte del discurso) , pero no creo que se les dé demasiado impulso. Lo que podría ayudar es si analiza oraciones y construye árboles de estructura de frases para que pueda ver si los verbos clave como montar , chupar o soplar afectan un antecedente sin él , lo que creo que es una característica común de las indicaciones: la ambigüedad de lo que presta a ser reutilizado para insinuaciones sexuales. De hecho, la capacitación general sobre el objeto de las oraciones donde el verbo es típico de las indicaciones probablemente ayudaría mucho. Estoy dispuesto a apostar que ciertos sustantivos como plátanos o palitos de helado se muestran con mayor frecuencia como objetos de verbos como montar y chupar que en otras oraciones. El modelo de la bolsa de palabras no entendería esto; los modelos bigram y trigram pueden, pero los árboles de estructura de frase definitivamente serían la forma más consistente de atrapar estas conexiones.
Conclusión
¿Alguien quiere hacer esto conmigo y ver cuánto de mi especulación ociosa resulta ser verdad? Será divertido y rentable (no realmente).
Notas finales
[1] Es decir, si el contestador usó la función de respuesta correctamente en lugar de simplemente escribir “@ screen-name”. En cualquier caso, es bastante fácil ignorar cualquier tweet de respuesta @ que no se vincule a un tweet específico.
[2] La suposición aquí es, por supuesto, que nuestros antepasados eran mucho más exigentes que nosotros. Siéntase libre de corregirme si tiene evidencia de que las generaciones anteriores fueron tan vulgares y entusiastas con los juegos de palabras como parece que somos.
[3] http://www.ldc.upenn.edu/Catalog …
[4] Creo que una vez escuché de un conjunto de datos de transcripción de chat de MSN que fue realmente increíble, pero parece que ya no puedo encontrar ninguna mención al respecto. Avíseme si sabe dónde puedo encontrar ese o cualquier otro conjunto de datos de mensajes instantáneos. Sé que algunas salas de IRC se registran públicamente: ¿hay un solo lugar donde uno pueda tomarlas todas a la vez?
[5] http://en.wikipedia.org/wiki/Sai …
[6] por ejemplo, “bofetada 1 mes por 4 horas” (visible con su TWSS correspondiente en http://twitter.com/#!/Blaxican_B …)
[7] Por ejemplo: http://twitter.com/#!/BNicole_/s … y http://twitter.com/#!/DomOfTheYe …
[8] Supongamos que tenemos alguna métrica razonable para la similitud. Podríamos usar algo como asegurar una distancia mínima de edición por debajo de un umbral o un número de palabras sin parar que dos oraciones comparten por encima de algún umbral.