Actualmente estoy creando un guión divertido, que básicamente coincide con las frases dadas y da una respuesta predefinida basada en los puntos de coincidencia. Puede pedirle que recupere información basada en transmisiones en vivo, ejecute tareas, cuente anécdotas o simplemente chatee con ella.
Ya tengo detección incorporada de palabras malas, bloqueo de mayúsculas o ambas. El programa tiene un nombre de niña y traté de acercarme lo más posible a ser una chica femenina, en términos lógicos (por ejemplo: todo el mundo sabe que la mayoría de las chicas femeninas tardan 700ms en responder a una pregunta, por supuesto bromeando). Así que aquí hay un pequeño ejemplo:
Cliente: ¿CUÁL ES SU PROBLEMA?
Kiku: ¡NO USES ESE TONO CONMIGO!
Cliente: #### tú
Kiku: ¿por qué estás siendo tan malo conmigo: /
Sin embargo, realmente me gustaría agregarle una función de sarcasmo. Entonces, si escribes algo con sarcasmo, ella lo detectará y responderá en consecuencia. Ahora bien, esta es una parte difícil: ¿cómo se enseña un guión, qué es el sarcasmo?
Para mí más específico. ¿Cuáles son las palabras sarcásticas más comunes usadas hoy? ¿O cómo obtener esa estadística? ¿Cómo puedo hacer que el guión entienda el contexto de la frase dada?
ACTUALIZAR
Como esta pregunta se está volviendo muy publicitada, creo que las cosas deberían aclararse un poco más. Está muy claro que hacer que un script detecte completamente el sarcasmo es básicamente imposible. Al menos en materia razonable. Sin embargo, creo que podría detectarse cierta cantidad de posible sarcasmo.
Actualmente lo he logrado hasta ahora, que mi script puede detectar un sarcasmo muy limitado. Predefiní algunas palabras sarcásticas comunes (sin embargo, solo son inútiles). Por ejemplo: como, lo que sea, sí, correcto y genial. Y luego primero coincide, las cosas simples, como mayúsculas y citas: THANKS you are so smart
o oh you are so "SMART"
.
Dado que la función principal de los scripts es hacer tareas o recuperar información, y después se le preguntará si eso era lo que quería decir. Entonces pensé, agregando "gracias" como una variable especial. Entonces, yeah thanks
o whatever thanks
desencadenará el posible sarcasmo, y el script le preguntará: "¿Detecto sarcasmo?" Su mejor opción sería decir "lo siento", de lo contrario agregará un punto de advertencia y, si se alcanza el límite, comenzará a ignorarlo.
Como estos algoritmos muy simples parecen funcionar realmente, entonces esta idea tiene un futuro, por supuesto, después de muchos ajustes y ajustes. Sin embargo, alguien mucho más inteligente haría un software de código abierto con la misma idea en mente. Entonces esta característica podría estar conectada a muchas funciones en la web. La atención al cliente probablemente sea la que más se beneficie, sin embargo, este tipo de software también podría usarse para detectar el contenido "marcado".
fuente
Respuestas:
Si tuviera un sistema completo de procesamiento de lenguaje natural y una base de datos de datos del sistema IBM Watson, podría marcar algunas declaraciones como posible sarcasmo. Por ejemplo, "¡Escuché que tu madre tiene cáncer y te acaban de despedir!" "Sí, no es la vida maravillosa!" podría marcarse porque podría reconocer que contraer cáncer y perder un trabajo generalmente no se describen como experiencias positivas.
Supongo que no tiene los recursos para armar un sistema de calificación de Watson. Podría armar una base de datos de frases sarcásticas de uso común y luego usar algún tipo de algoritmo de coincidencia de texto entre la declaración de destino y la base de datos de sarcasmo. Tengo que adivinar que no será muy efectivo porque todas las frases que se usan sarcásticamente se usan sinceramente con más frecuencia. Por ejemplo "Esa es una buena X". generalmente se usa sinceramente, pero a veces se usa sarcásticamente.
El sarcasmo está muy relacionado con el engaño. No es raro que una persona que usa sarcasmo lo niegue cuando se lo cuestiona, y su elección de palabras hace posible la negación. Sospecho que esto significa que un buen detector de sarcasmo es probablemente un problema tan difícil como un programa de conversación que pasa la prueba de Turing.
fuente
<Sarcasmo>
</Sarcasm>
Honestamente, no tengo idea de cómo hacerlo. Creo que solo alrededor del 30% de las personas en la vida real "adquieren" sarcasmo en primer lugar, por lo que hacer que una computadora lo reconozca y entienda parece una tarea muy difícil.
Editar Basado en los comentarios a mi publicación original, creo que he ilustrado perfectamente la extrema dificultad de la tarea que se me pide. Sí, la primera mitad de mi publicación fue sarcástica. Incluso enfaticé ese hecho usando una etiqueta de marcado inventada. Al publicar un comentario sarcástico sobre una solución trivial a un problema excepcionalmente difícil, y ese sarcasmo que se interpreta como "inútil" plantea esta pregunta:
Si no puede reconocer el sarcasmo escrito, ¿cómo va a escribir un algoritmo que lo reconozca?
Ah, y Anna, si alguien incluye el término "Creo ..." en su oración, generalmente indica que es una opinión que se está expresando, no necesariamente un hecho investigado.
fuente
El problema de la detección del sarcasmo es un problema abierto en la lingüística computacional: sería mejor que busques en Google Scholar que stackexchange para tales cosas. Sin embargo, se han hecho algunos progresos en el tema. Para el sarcasmo hablado , se puede construir un reconocedor robusto utilizando "características espectrales y contextuales" que (según los autores) detectan el sarcasmo y un anotador humano. Los autores del artículo afirman que, por lo tanto, el texto sin procesar no es suficiente para detectar el sarcasmo; de hecho, obtuvieron mejores resultados al ignorar las palabras reales que se dicen.
Tsur y col. También informamos algunos resultados interesantes en la detección de sarcasmos textuales el año pasado con su algoritmo SASI . También informan algunos hallazgos de seguimiento adicionales en otro documento.
En cualquier caso, esta es la vanguardia de la investigación del lenguaje computacional; no esperes que nadie te dé un libsarcasm en bandeja de plata. Necesitará grandes conjuntos de datos de capacitación y mucho tiempo libre para ajustar su detector de sarcasmo, e incluso entonces, una precisión del 77% (como se informa en el documento SASI) no es suficiente para rechazar una publicación basada únicamente en una bandera de sarcasmo.
fuente
No creo que esta respuesta sea un método de enfoque muy realista, pero si tuviera los recursos para hacerlo, creo que sería posible. Considere el proyecto reCaptcha de google, que utiliza seres humanos para descifrar palabras que las computadoras no pueden leer ( "Más información Página Recaptcha" ). Creo que el problema es similar, ya que estás tratando de hacer que una máquina descubra algo que los humanos son al menos mejores para hacer.
Imagine que tiene los recursos para pedirle a millones de personas que le identifiquen el sarcasmo dentro de un contexto de conversación escrita. Imagine que podría pedirle a muchas personas que le envíen el momento exacto de la conversación cuando se dio cuenta del sarcasmo y tan poco como antes de darse cuenta de que uno necesitaría marcar esa identificación. Esto podría almacenarse en una base de datos, digamos, a la que tuvo acceso su programa. Luego, cuando el usuario le estaba escribiendo la conversación, la base de datos podría filtrarse para conversaciones "similares".
La forma de evaluar la similitud es algo en lo que pensar, pero creo que probablemente ya exista investigación. Creo que sería muy similar a la teoría detrás de las correcciones de errores ortográficos. De cualquier manera, probablemente se reduciría a un valor probabilístico de que la conversación que se está escribiendo es de hecho sarcástica, y en algún momento tendría que proporcionarse un umbral.
También me gusta su idea de presentar la pregunta "¿Fue eso sarcasmo?" al usuario y luego usar su respuesta para llegar a una decisión más precisa.
Espero que mi respuesta no haya sido un desperdicio completo y le deseo suerte en este esfuerzo.
-Asaf
fuente
La detección del sarcasmo en la lingüística computacional (también conocido como procesamiento del lenguaje natural) es un problema extremadamente difícil en sí mismo. Básicamente es un problema de clasificación donde un modelo debe ser entrenado primero. Recientemente se investigó y publicó un problema similar para encontrar personas de doble sentido (archivo PDF). Las técnicas para ambos problemas son comparables.
fuente
Mis 2 centavos:
Pregúntele a un psicólogo cómo reconocer el sarcasmo en las frases, con esa información compárelas con la entrada.
Pero sería un proyecto realmente difícil, con el esfuerzo utilizado en eso, podría hacer el mejor sistema operativo del mundo con seguridad: P
fuente