Atualmente, estou construindo um script divertido, que basicamente corresponde a determinadas frases e fornece uma resposta predefinida com base nos pontos de correspondência. Você pode pedir para recuperar algumas informações com base em feeds ao vivo, executar tarefas, contar histórias ou apenas conversar com ela.
Eu já tenho detecção embutida para palavrões, caps lock ou ambos. O programa tem um nome de menina e eu tentei chegar o mais perto possível de ser uma garota feminina, nos termos lógicos (por exemplo: todo mundo sabe que a maioria das meninas femininas leva 700ms para responder a uma pergunta, brincando, é claro). Então, aqui está um pequeno exemplo:
Cliente: QUAL É O SEU PROBLEMA?
Kiku: Não use esse tom comigo!
Cliente: #### você
Kiku: por que você está sendo tão mau comigo: /
No entanto, eu realmente gostaria de adicionar o recurso sarcasmo. Então, se você escrever algo em sarcasmo, ela o detectará e responderá de acordo. Agora, essa é uma parte complicada: como você ensina um script, o que é sarcasmo?
Para mim, mais específico. Quais são as palavras sarcásticas mais comuns usadas hoje? Ou como obter essa estatística? Como posso fazer o script entender o contexto da frase especificada?
ATUALIZAR
Como esta pergunta está ficando muito exagerada, acho que as coisas devem ser esclarecidas um pouco mais. É muito claro que fazer um script detectar completamente o sarcasmo é basicamente impossível. Pelo menos em questão razoável. No entanto, acredito que alguma quantidade de possível sarcasmo possa ser detectada.
Atualmente, cheguei até agora, que meu script pode detectar um sarcasmo muito limitado. Eu predefini algumas palavras sarcásticas comuns (no entanto, sozinhas são inúteis). Por exemplo: como, o que quer que seja, certo, ótimo. E então ele combina primeiro, as coisas simples, como maiúsculas e citadas: THANKS you are so smart
ou oh you are so "SMART"
.
Como a principal função dos scripts é executar tarefas ou recuperar informações, e o afterwords perguntará se foi isso que você quis dizer. Então eu pensei, adicionando "obrigado" como uma variável especial. Então, yeah thanks
ou whatever thanks
desencadeará o possível sarcasmo, e o script perguntará: "Eu detecto o sarcasmo?" Sua melhor aposta seria pedir desculpas, caso contrário, ele adicionará um ponto de aviso e, se o limite for atingido, começará a ignorá-lo.
Como esses algoritmos muito simples parecem realmente funcionar, essa idéia tem um futuro, é claro, depois de muito ajuste e ajustes. No entanto, alguém mais inteligente criaria um software de código aberto com a mesma idéia em mente. Em seguida, esse recurso pode ser conectado a várias funções na web. O atendimento ao cliente provavelmente se beneficiaria mais, no entanto, esse tipo de software também poderia ser usado para detectar o conteúdo "sinalizável".
fonte
Respostas:
Se você tivesse um sistema completo de processamento de linguagem natural e um banco de dados de fatos do sistema IBM Watson, poderá sinalizar algumas declarações como possível sarcasmo. Por exemplo: "Ouvi dizer que sua mãe tem câncer e você acabou de ser demitido!" "Sim, a vida não é maravilhosa!" pode ser sinalizado porque reconhece que contrair câncer e perder um emprego geralmente não são descritos como experiências positivas.
Suponho que você não tenha recursos para montar um sistema de notas Watson. Você pode montar um banco de dados de frases sarcásticas comumente usadas e, em seguida, usar algum tipo de algoritmo de correspondência de texto entre a instrução de destino e o banco de dados de sarcasmo. Eu tenho que supor que não será muito eficaz, porque todas as frases que são usadas sarcasticamente são usadas sinceramente com mais frequência. Por exemplo "Esse é um bom X." geralmente é usado com sinceridade, mas às vezes é usado com sarcasmo.
O sarcasmo está intimamente relacionado ao engano. Não é incomum uma pessoa que usa o sarcasmo negá-lo quando desafiado, e sua escolha de palavras torna possível a negação. Eu suspeito que isso significa que um bom detector de sarcasmo provavelmente é um problema tão difícil quanto um programa de conversação que passa no teste de Turing.
fonte
<Sarcasmo>
</Sarcasm>
Honestamente, não tenho idéia de como fazer isso. Eu acho que apenas cerca de 30% das pessoas na vida real "pegam" sarcasmo em primeiro lugar, então fazer um computador reconhecê-lo e entendê-lo parece uma tarefa muito difícil.
Editar Com base nos comentários do meu post original, acredito que ilustrei perfeitamente a extrema dificuldade da tarefa que está sendo solicitada. Sim, a primeira metade do meu post foi sarcástica. Eu até enfatizei esse fato usando uma tag de marcação inventada. Ao postar um comentário sarcástico sobre uma solução trivial para um problema excepcionalmente difícil, e esse sarcasmo sendo interpretado como "inútil" traz essa pergunta:
Se você não consegue reconhecer o sarcasmo por escrito, como escrever um algoritmo que o reconheça?
Ah, e Anna, se alguém incluir o termo "eu acho ..." em sua frase, geralmente indica que é uma opinião que está sendo afirmada, não necessariamente um fato concreto pesquisado.
fonte
O problema da detecção de sarcasmo é um problema aberto na lingüística computacional - você ficaria melhor se pesquisasse no google scholar do que no stackexchange por essas coisas. Houve, no entanto, algum progresso na questão. Para o sarcasmo falado , um reconhecedor robusto pode ser construído usando "recursos espectrais e contextuais" que (afirmam os autores) detecta o sarcasmo e também um anotador humano. Os autores do artigo afirmam que o texto não é, portanto, suficiente para detectar o sarcasmo - de fato, eles obtiveram melhores resultados ignorando as palavras reais ditas.
Tsur et al. também relataram alguns resultados interessantes na detecção de sarcasmo textual no ano passado com o algoritmo SASI . Eles também relatam algumas descobertas adicionais de acompanhamento em outro artigo.
De qualquer forma, essa é a vanguarda da pesquisa em linguagem computacional; não espere que alguém lhe entregue um libsarcasm em uma bandeja de prata. Você precisará de grandes conjuntos de dados de treinamento e muito tempo livre para ajustar seu detector de sarcasmo - e mesmo assim, uma precisão de 77% (conforme relatado no artigo da SASI) não é suficiente para rejeitar uma postagem baseada apenas em um sinalizador de sarcasmo.
fonte
Não acho que essa resposta seja um método de abordagem muito realista, mas se você tivesse os recursos para fazê-lo, acredito que seria possível. Considere o projeto reCaptcha do Google, que usa seres humanos para decifrar palavras que os computadores não podem ler ( "Página Saiba mais sobre a recaptcha" ). Acredito que o problema é semelhante, pois você está tentando fazer com que uma máquina descubra algo que os humanos já são pelo menos melhores .
Imagine que você tinha recursos para pedir a milhões de pessoas que lhe identificassem sarcasmo dentro de um contexto de conversa digitada. Imagine que você poderia pedir que muitas pessoas enviassem a você o momento exato da conversa em que o sarcasmo foi realizado e o mínimo da conversa antes da conclusão de que seria necessário marcar essa identificação. Isso pode ser armazenado em um banco de dados, digamos, ao qual seu programa teve acesso. Então, como o usuário estava digitando a conversa para você, o banco de dados poderia ser filtrado para conversas "semelhantes".
Como avaliar a similaridade é algo em que pensar, mas acredito que provavelmente já exista pesquisa para já. Eu acredito que seria muito parecido com a teoria por trás das correções de erros ortográficos. De qualquer maneira, provavelmente se reduziria a um valor probabilístico de que a conversa sendo digitada é de fato sarcástica, e em algum momento um limite teria que ser fornecido.
Também gosto da sua ideia de apresentar a pergunta "Isso foi sarcasmo?" ao usuário e, em seguida, usando sua resposta para chegar a uma decisão mais precisa.
Espero que minha resposta não tenha sido um desperdício completo e desejo-lhe sorte neste empreendimento.
-Asaf
fonte
A detecção de sarcasmo na lingüística computacional (também conhecida como processamento de linguagem natural) é um problema extremamente difícil por si só. É basicamente um problema de classificação em que um modelo deve ser treinado primeiro. Um problema semelhante para encontrar duplos participantes (arquivo PDF) foi recentemente pesquisado e publicado. As técnicas para ambos os problemas são comparáveis.
fonte
Meus 2 centavos:
Pergunte a um psicólogo sobre como reconhecer sarcasmo em frases, com essas informações compare-as com a entrada.
Mas seria um projeto muito difícil, com o esforço usado nisso, você poderia fazer o melhor sistema operacional do mundo com certeza: P
fonte