Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maktub

assistente Virtual

Recommended Posts

Salve caras, to com um problema, bom na verdade ainda não vi um modo mais fácil de conseguir solucionar este pequeno problema, vejam se podem me dar uma luz.

 

Estou criando um sistema para inteligência artificil (que até agora ta parecendp burrice virtual hehehe), bom a principal caracteristica dele é, um usuário faz uma pergunta e o sistema da uma resposta de acordo com a pergunta, quando o sistema não sabe responder informa que a pergunta será enviada por e-mail e que em breve será respondida.

 

Bom meu problema é o seguinte, sempre que recebo a pergunta, cadastro ela no banco de dados com a devida resposta e se perguntarem de novo a mesma coisa o sistema responde.

 

Mas tem um defeito, se a pergunta for:

 

Qual é a cor do cavalo branco de napoleão?

 

e no sistema estiver cadastrado

 

Qual é a cor do cavalo de napoleão?

 

O sistema entende que não existe a pergunta pois faz uma busca exata, mas se eu tirar a busca exata ele vai mostrar possíveis respostas com as palavras da pergunta e isso seria burrice.

 

Será que tem uma forma de comparar a pergunta e verificar qual melhor se enquadra na cadastrada no banco de dados?

 

Ex: na pergunta acima faltou o "branco" existe uma maneira de fazer o sistema entender que a pergunta é a mesma mas só falta uma palavra?

 

Segue abaixo o que eu fiz até agora.

 

 

 

<html><head><title>Assistente Virtual</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#FFFFFF" text="#000000" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0"><table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0"><tr><td><img src="imagens/assistente.gif"></td><td><%pergunta = Trim(Request.Form("perguntas"))If Len(pergunta) < 1 Then%><font color="#FF0000"><b>Você precisa digitar uma pergunta!!</b></font><%response.write "<meta http-equiv='refresh' content='1; url=formulario.asp'/>"%><%Elsedim dsndim Conndsn="DBQ=" & Server.Mappath("perguntas_respostas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open dsnsql = "SELECT *FROM tabela WHERE perguntas = '"&pergunta&"'"Set RS = Conn.Execute(sql)If RS.EOF ThenResponse.redirect "enviaemail.asp?pergunta=" & pergunta & "'"Elseperguntas = RS("perguntas")respostas = RS("respostas")%><b>Você:</b>  <%=perguntas%> <br><b>Ubíqua:</b>  <%=respostas%> <br>  <table border="0" width="100%" id="table2" cellspacing="0" cellpadding="0"><tr><td><form name="form1" method="post" action="respostas.asp"><b><font size="2" face="Arial">Sua pergunta: <input type="text" name="perguntas"><input type="submit" name="Submit" value="Ok"></td></tr></table><p><%RS.CloseConn.CloseSet RS = NothingSet Conn = NothingEnd IfEnd If%></td>	</tr></table></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, nunca fiz algo desse tipo, mas eu creio que o ideal é você não ter a pergunta completa gravada no banco.

 

Neste caso: Qual a cor do cavalo branco de Napoleão?

 

Se a pessoa digitar um caracter diferente, ja não encontrará. Ex:

 

Qual era a cor do cavalo branco de Napoleão?Qual é a cor do cavalo branco de Napoleão?Qual cor do cavalo branco de Napoleão?Qual a cor do cavalo branco de Napoleão ...Qual a cor do cavalo de Napoleão?Quero saber qual a cor do cavalo branco de Napoleão e Etc...

Imagino que o ideal é você ter uma tabela com palavras, mas como você vai montar a estrutura do seu banco pra isso, nao sei.

 

Veja um exemplo, você teria que ter as palavras gravadas.

 

1  cavalo2  branco3  napoleão

Então, você faz uma busca no banco, e tendo encontrado duas dessas palavras, você ja responde todas as perguntas feitas no exemplo acima, idependente do jeito que a pergunta foi feita.

 

Entao, pra cada palavra você tem um autonumerador, use uma outra tabela associando.

 

1 e 2 = 'resposta de uma determinada pergunta.'

9 e 7 = 'resposta de uma outra pergunta qualquer' e assim por diante.

 

Ou seja, se na busca q você fez, for encontrada as palavras cavalo e napoleão, entao você faz uma busca na tabela de respostas que tenha 1 e 3, e mostra a resposta que ta la...

 

Espero ter ajudado, nunca desenvolvi nada desse tipo, mas se você permitir, podemos lançar um desafio pro grupo, e com as ideias de todos, chegar numa solução mais ideal.

 

Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala dataset, Fico preocupado com as variaveis, pode existir é claro milhares de respostas para um pergunta, esse projeto é bem desafiador e complexo, pois mexe com a lógica de uma forma mais estruturada, valeu pela dica vou adaptar com algumas idéias que tive.Quanto ao desafio, acho uma boa, permito sim, terá poucas pessoas participando mas acho legal a idéia, e um sistema desse não é para ualquer um.Me avise quando estiver no ar o desafio, até lá terei algo mais atualizado.abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao nao...usa likena instrução sql, você usa o likeex:sql = "select * from Perguntas where Pergunta like '%" & pergunta & "%'"dessa forma os registros que estiverem mais proximos do que a pessoa digitou vai aparecer, mais é claro, não é 100% seguro isso, pois, vai que a pessoa digita apenas "branco", ai vai pegar o primeiro registro que tiver "branco" escrito.o ideal mesmo é fazer como o amigo dataset falo.crie uma tabela apenas para as perguntas, e outra para as respostas, você vai precisar fazer relacionamentos, e chaves estrageiras..na tabela de perguntas, você registra todas as perguntas, e cria um campo para receber o codigo da resposta.na tabela de resposta você poem apenas as respostas.na hora de cadastrar a pergunta, ele verifica qual a resposta correta e coloca apenas o codigo da resposta na tabela de perguntas....+/- isso..você ja estudou MER? SGBD?são matérias relacionadas a banco de dados, e que trazem o melhor desempenho, e agilidade à um banco de dados..dpois da uma pesquisadaabrasss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Maux,É realmente estou tentando fazer algo nessa lógica, ainda não descobri uma maneira de fazer com que o sistema reconheça a resposta para pergunta.Do jeito que falou teria que fazr um a um, to pensando em algo que faça o reconhecimento de interpretação e traga a resposta mais ideal ou que se enquadra na pergunta

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade esse tipo de coisa é meio complexanunca precisei fazer algo assimmas eu sempre descartaria pronomes e preposisoes das consultasdeixando apenas verbos e substantivosassim ficaria mais facil de encontrar pergutas com todas as palavrasai se nao encontrar cai nas excessoes que devem ser tratadas retirando alguma das palavras

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é marioufpa, To fazendo uns testes, dei uma pesquisada sobre o assunto, é bastante variável e bem real a possibilidade de erros viu, mas até encontrar a formula exata vai ter chão. O que acha de colocarmos um desafio sobre este assunto igual o dataset mencionou?abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.