NLP, AGI and the programmers

Quantum Robin

Jan 3, 2019

Natural Language Processing (NLP) and Apparent General Intelligence (AGI -- with the "A" standing for apparent rather than artificial) will play a big role in future systems; we see it already in the CAL, ECHO, SIRI, CORTANA, etc.

Paul Deitel and Harvey Deitel wrote about NLP:


I found this information about NLP and AGI:

"Brendan wrote:
What we current have is:
  • Machines that are incapable of doing anything except manipulating numbers
  • Natural languages (e.g. English) that are so bad at describing how to manipulate numbers that humans invented a completely different language (mathematics)
  • Programming languages that (despite being heavily influenced by mathematics) suck at mathematics
  • Deluded fools that decided using mathmatics as a programming language is too hard, so they want to try something that's many orders of magnitude harder than "too hard"
We will soon have machines that are capable of understanding natural language. Natural languages can handle numbers well enough for those who are articulate, and if you are articulate and can't explain something in natural language, you don't understand it.

If I write a paragraph of instructions and then say underneath, "Do that ten times," (or say "Do this ten times," above the paragraph) the compiler will set up a count, adjust it after each loop, and stop looping when the count runs out. That is easy to understand, and just as efficient. Now, why would anyone think it's a mistake to do that? The same applies to a host of other things that could be done well in natural language, and once there's enough intelligence in the machine to cope with complexity and hide that complexity from the user, it will be much clearer and more compact than normal program source.

Solar wrote:
The customer usually does not have the skillset required to be precise enough for you to even ask the right questions about the things where the customer is ambiguous (i.e., everything).
That's certainly true today, but by making it easier for ordinary people to learn to program by not having to learn a programming language (which is something Plain English programming fails to do - it merely provides lots of cases where natural wording can be used, just so long as you use the right natural wording), more people will learn to communicate more clearly so that they can work with intelligent software to create programs that do what they need. Your job as a programmer is to find out what the customer wants, and if you can't find out what that is because he can't express himself sufficiently well, you can't write the program he wants, and nor can an intelligent machine. You could maybe write what you think he needs and hope he likes it, but if he doesn't and refuses to pay, you've wasted a lot of time and effort. An intelligent machine could create something that might suit his needs without any great cost, and once he sees it, he can say "I don't like the way it does that", or ask "How am I supposed to find such and such?" etc. The intelligent system can then modify the program again and again until the customer is happy. That will all be possible with AGI, but not before.

Do we think in functions?
Yes, but most people do so in a muddled way which takes a lot of training to fix, and that training could all be done through natural language. The reason for using programming languages for that training today is simply that it produces visible results - machines can run their code and show whether it's correct or not, but they can't do that yet with natural language programs as no compiler can handle it.

Or objects?
That can be hidden from them, but future programming systems needn't think in terms of objects. An object is just a package of variables and procedures designed to help people handle something that's complex for humans but easy for intelligent machines. Whatever leads to the best combination of efficiency and size, the machine will find that solution and implement it without caring about human programming fads.

To repeat, the user of our software does not have this skill, nor is he interested in acquiring it, nor is he necessarily capable of acquiring it, nor is it necessary for him to acquire it.
And yet you are apparently able to work with him and produce what he needs. An intelligent system will be able to do the same. Its task, like yours, is to force the customer to spell out what he wants in sufficient detail for you to do the rest.

You need someone who has that skill, and some basic knowledge of the business at hand, so you can work out what questions to ask. You need to bridge the gap between business domain and technical design of the software.
Whatever knowledge you need for that, the machine can acquire it too, but it needs full-blown AGI before the human programmer is made redundant.

So the point at which actual implementation is done is not the customer, or the business side, it's people who have learned how to break down problems, and how to express design / implementation in an unambiguous way.
That breaking down of problems is not something that will automatically come with natural language programming as that capability only comes with AGI, so it will still depend on someone providing that skill for it. If the user can't do this, he will need to get help from a programmer, but there will be a lot of cases where a user who knows nothing of programming finds that he can manage to break down the task for the machine and produce the program he needs without calling in a programmer to help. Later on, as we get closer and closer to AGI, the expert in the machine will gain in capability and further reduce people's dependence on human programmers, and sooner or later they'll all be gone.

At which point the benefits of a "Plain English" programming language rapidly diminishes.
Plain English programming isn't doing natural language and has no intelligent system tied to it, so its only gain over other programming languages is readability, and even that can be disputed. Natural language programming will initially be little better than that too, but it will grow in capability over time as the intelligent part of the system is added.

Kazinsal wrote: order to make this even remotely feasible you would need a computer so intelligent it would be indistinguishable from a conscious human being, just with the backing of scores of teraflops of computational power.
It wouldn't pretend to have consciousness, so you might detect the difference, but it would certainly need to match the intelligence of humans, and indeed, high-performing ones at that if it's actually going to do any useful work. I don't know how much processing power and memory it would need, but my bet is that an ordinary laptop with a single processor and a gigabyte of RAM will be able to handle the task without appearing to be slow. Vision is hard and takes a lot of processing, but we don't need anything like that for this: thinking is a much simpler task, just so long as you have the right rules and have placed them into the right hierarchy - there is a lot less data needing to be crunched.

You cannot just tell another person to do something and have them do it for you with no hesitation every time unless they want to, and forcing them to want to would be both incredibly difficult and incredibly immortal.
A machine with no "I" in it will simply work flat out for you without complaining, feeling nothing at all.

Schol-R-LEA wrote:
You know better than that; they can't manipulate numbers at all, they can only change sequences of electrical impulses which represent symbols, some of which happen to be numbers. The values - regardless of things such as 'data type' and so on, which the machines have no 'concept' of at all - exist entirely in our own interpretation of them.

So DavidCooper was even farther off than you said.
Data represents things, and the numbers in the machine are just symbols which represent those things. Sometimes they represent numbers; sometimes words; sometimes concepts. Whatever the brain does when crunching data, computers can match. Understanding things is merely a matter of getting ideas (concepts represented by data) into a state where they become compatible with the other data in the system rather than contradicting it, and wherever there are gaps left in that understanding, these are merely gaps in the understanding - it's no different for us, because we don't need to understand all the workings of the universe either to understand many of the things that happen within it. All our knowledge and understanding is built upon some gaps, but those gaps don't mean that it's impossible to determine the truth of arguments where the gaps have no relevance. Transformations and comparisons can operate on the data to reveal more knowledge that was hidden within it, and problems can be explored by simulating the external reality and looking for solutions there before applying them to the outside world, just as happens in our brains. We have a hierarchy of methods that we apply when trying to solve problems, and each person builds their own set of tools and their own rules about the order to try them in based on the kind of problem at hand. It's all just computation, with better performers having a better collection of better methods, and better rules about how to apply them. There is no barrier to computers matching our processing abilities. It's all done through manipulation of data that represents things".

"manhobby wrote:
Why are there not a place to Start for People Interested in Natural Language Programming?

You could try setting up a Facebook group for that to see if there's enough interest in the idea to justify a proper forum, but I don't think many people working in the field will be keen to give a lot of information away because it could be equivalent to handing hundreds of billions of dollars to their rivals, and they aren't that crazy. It would also aid the development of intelligent killer robots for use on the battlefield, and that's another reason why a lot of the details should not be shared openly (until the more moral countries have built up an overwhelming lead in that area). It's a very different situation with OS development because there are plenty of parts that are freely available and well documented, so anyone who wants to have a go can simply collect the necessary parts and build an OS out of them.

If you want to build a system for natural language programming, you're really going to have to work most of it out for yourself. Gerry has revealed how his system works, but it isn't natural language programming. I pointed you towards it because it's a good starting point for seeing how a simple approach can achieve a lot more than might be expected, but it's also an opportunity to see the places where it fails, and that helps you see where the problems are that you would need to solve to get to real NLP. Gerry thinks that as more and more lines of code are added to his system (to cover more and more relationships between actions and things) it will appear more and more intelligent, eventually reaching the point where it looks fully intelligent and understands practically all possible wordings that might be used as instructions such that it responds to them correctly. He thinks that the personal digital assistants built by Amazon, Google, Apple, etc. are working in much the same way, but they have millions of users helping to train them, effectively building millions of lines of code to handle more and more specific phrases. His PEP system can't compete with that due to its small number of users. But it isn't the right approach anyway - it will never produce sufficient intelligence to be fully rational.

If you want a rational system that can handle all phrases, you can't cheat - you have to understand the entire process mechanistically and program every single part of it, converting from surface level language down into the structure of thought (and you need to be able to convert to full depth where you're working with the fundamental components of meaning), and you also have to find the right ways to store the data so that reasoning can be applied to it efficiently. There are no shortcuts - it's takes decades of hard thinking and it eats up your life, which is why people prefer to look for easier options. The details of the easier options have been published because they only half work, but they will continue to improve, so if you want a forum to discuss that, go ahead and set one up.

Maybe also instead of using the high-level languages, programmers will start using human language level programming.

What is OS Community's opinion about human language level programming?

I'm sure they will adapt to it in a hurry when it's available, but it isn't yet and won't be of a lot of interest to them until it is. You aren't going to learn anything by asking the same people the same questions again and again".


Here are my questions about the subject:

What are the opinions of the programmers about NLP and AGI?