Actually, I believe they call that 'reduction'. Reduction of the sort you describe is more like keyword searching. Once you remove the common words, you are left with keywords you can lookup to find an answer. For sentences like "How is the weather?" or "Do you like the weather?", reducing to "weather" and then returning "Let me look outside... yes, it's a beautiful day" works great. But conversations like "I hate this weather" => "Let me look outside... yes, it's beautiful" don't work. More complicated 'weather' statements like "Did you weather the storm?" (a common English cliche) or "The weather was terrible" fail miserably. There are many more things you can do besides simple reduction. For instance, determine if the sentence is a question or a statement, determine intent (does, the sentence contain 'what' or 'how', etc and is the person looking for some factual answer), not to mention keeping track of context. Natural language processing is a fairly complex problem. You can get simple results with simple algorithms, but you quickly run against walls. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||



| Quote: |
| Actually, I believe they call that 'reduction'. |







| The ideal language parsing would be two-fold. Unless man can program computers to handle language like the human brain does (and we still don't know exactly how it all works), we'll have to 'teach' him certain combinations of words and pass the answer to it as a response. If all fails, reductionism can be used to shrink the sentence to a more 'parseable' format. The process would look a little like this: 1) user enters a sentence as input. 2) Unless only one word, search for direct matches (use AIML or some other way to define matches). If only one word remains go over to point 5. 3) If found, return response and quit this subroutine. Else, go to 4. 4) Remove some common small words, go back to 2 and try again. 5) Single word 'commands'. Search a seperate archive for single word responses (these could contain references to weather, traffic, google searches,... whatever) and response accordingly. This way would allow you to 'filter' out the obscure sentences like 'i don't like the weather', or 'did you weather the storm?' before passing over the remains to the actual weather module/default response. The process could be done in several phases, depending on the amount of 'common' words that should be deleted. Something else that could be introduced would be to use a 'fuzzy matching' system, where typo's would be able to be corrected if a near match was found. But of course, this whole process would greatly increase 'thinking' time, and it's a matter of deciding where to stop processing and give up to conserve on resources. Lots of work has allready put into natural language parsing, both by scientists and programmers like ourselves, but as computers turn more powerful, it creates new possibilities and less boundaries. A simple workstation would be able to match an inputted line to a database of 50000 common english words and 'correct' misspelled words easily, not even using much resources and doing it 'on-the-fly'. Once spelling mistakes are discarded, it's a matter of defining enough matches to create a near-human responding AI. |
|



QUOTE(Mojave @ Mar 1 2005, 01:47 AM) Are you referring to the srai tag? Does the*lazy*in that stand for reduction or recursion? I'm not much of an AIML fan or expert. The ideas of reduction and recursion have been around far longer than AIML and they mean two completely different things. | |



| AIML does both recursion and reduction. There's the For example:
That Human: are you a computer or something? Alice: Or something. Hey, how did you know I am a machine? So yeah, AIML does both. _________________ Current Site (2008) http://www.cuvou.com/ |
|||



QUOTE(alienz @ Mar 1 2005, 06:37 AM) I've seen recursion and reduction used to describe the same thing, and I wasn't just referring to AIML. | |




| My old bot, Tiler, did exactly that: got a sentence down to its keywords, and looked up a response based on it. He also learnt new replies automatically based on what people told him. So, after having done considerable work on trying to make changes to improve that system I think I have some right to say that it doesn't work. You can get reasonably good results pretty quickly with it, but like Mojave said (paraphrased), simple solutions can only yield simple results. That kind of system bottlenecks after a few thousand messages if it learns, and is a pretty poor system for various reasons already talked about above if you preprogram responses in. |
|
| All times are GMT |
||