Ä,123,ξ,01010101,æ,-0.005 as a postal code at first ? Sure ok. That is fine. Then, again, through interactive conversation, you would say : “no, it must only be 6 char acters in length.”
Now you are assuming the system knows about hexadecimal digits, and assuming it knows about roman numerals. It won’t know these things at first.
My approach is a “child machine” (see Turing’s writings). It will start with some base amount of knowledge. Yes, making incorrect assumptions and errors is quite alright. By a process of positive and negative feedback, it will continue to refine its internal rules. In other words, I will allow it to make mistakes, take guesses, and get feedback - true learning.
Yes, so far the parse trees are a combination of English and internal “key word identifiers”, but all the original English words are stored also, so it knows the original text.
I think this approach is promising. For example I am right now able to do some “fuzzy” matching involving parse trees. I can tell the bot “John’s phone number is 123-4567”. And later ask “What’s John’s cell phone number?”
It will then ask “I’m not sure if it is his *cell* phone number, but the only number I have of John’s is 123-4567”
Or, I can say “John’s cell phone number is 123-4567” and ask “What’s John’s number?” it will then say, “Do you mean *cell* phone number?”
And yes, it puts in the asterisks around the words it is emphasizing.
Now these are very simple examples, but it is a start, and I believe this kind of “fuzzy” matching is the path to go. Also, making assumptions, being wrong, and then having to me told more information to clarify (like “no, postal code must be 6 char actors long only.”) is a small price to pay.
One of the things I have realized is there doesn’t seem to be any knowledge that is absolute. There is always some way that you have to further clarify.
Your examples above are excellent. Having to have all that information “hand coded” or manually entered will never give rise to intelligence - it must grow, step by step, make assumptions, ask clarifying questions. That is where the intelligence is, not sitting and coding and coding all possible rules, and making it perfect from the start, because someone will come along and say “well… what about….”.
Information always changes as well. If you coded in your program a few years ago that there were 9 planets, it was true - Pluto was a planet a few years back, now it is not considered a planet because new criteria was defined for a planet.
Right now my bot is only aware of the alphabet and digits 0 to 9 and +/- When you type in just a number like 45 or -45.1, it knows to think of that as a number.
So it won’t think that a postal code could contain Chinese characters for example. Also, it does not know hexadecimal yet. Later it will, and if it makes the assumption that K0J FBF is a postal code because it considered F as a digit, I will then provide a clarifying fact that it must be a decimal digit. Now… the ‘fun’ part is going to be writing code that takes that English fact (or whatever language), coded , as I say , as a parse tree, and integrate it into its existing knowledge base parse trees, and update them. The updated parse tree will then be the data source for other code which translates that into Perl code (or whatever language) that actually does the validation.
One last thought - it is very interesting that a machine must be 100% correct from the start, yet we think nothing of teaching humans, having them make errors, false assumptions, and there is no question that humans are intelligent!!
There is almost nothing that is absolute. I say almost, otherwise that would be absolute.