You are indeed correct in that there are plenty of NLP systems around, which have or are being created by some bright minds.
What I am seeing though is that the use of NLP systems in industry, seems to be very sparse.
You phone up a customer service centre and you have to...press 1 for customer services, press 2 for billing, press 3 for payment, press 4 for... you get the picture.
To program this sort of system is ridiculously easy and should've been phased out about 5 years ago. Yet, for some strange reason, this antiquated system is still in operation today.
If the state of NLP is so saturated, why are we not seeing these simple systems (eg. the press x for y department), being superseded by a more advanced NLP?
Businesses used to be extremely enthusiastic about systems that incorporated natural language processing and learned knowledge. This was back in the late 1970s (?), 1980s, and into the early 1990s. The systems (expert systems) proved far too tedious to develop and maintain, however, and the market collapsed.
Similarly, voice recognition (e.g., via telephones) was experimented with by businesses, and the results weren't as impressive as they'd hoped, and as such, telephone support that relies on voice recognition has picked up a terrible reputation.
While technology in both fields have significantly improved over the years, businesses are reluctant to invest in these new technologies due to what has been experienced with past technologies. In addition to this, these technologies don't bring the businesses significantly higher returns (and would rather not spend money to replace/upgrade their "software capital" which works just fine), so they see no reason to adopt it.
So, what one finds are a lot of different technologies being offered by developers, and very few being picked up by businesses. That's the saturated market I mentioned.
I am currently thinking of changing my business model to something which involves licensing algorithms from different people.
Algorithms cannot be licensed. Software, code, and processes, however, can.
You are right in saying that, in order to gain funding, whoever it is, shall have to distinguish themselves from the competition. The best way to do this is bring the NLP system to market and successfully sell it to the market...gaining revenue...and proving that they can bring this (business) idea forward. Once this happens, investors will take that person, seriously.
Promoting and selling the product on the market is what every competitor is trying to do, though, and some are successfully doing. Few attract significant investment though. That is why I'm stressing the need to offer a product that goes above and beyond in excellence -- so that the product can not only stand out and sell well from good marketing, but also be attractive entities that may wish to invest in new technologies, who have their pick of any product available. Something about the software -- and not just how it's marketed -- has to make it exceptionally worthwhile and revolutionary in order for it to succeed.
With regards to having the "hard-coded feel". I assure you, my AICore doesn't have many words hard coded. The problem is that its database is currently very sparse. I need to populate its database with more facts and sentences.
I suppose my comments about it feeling hard-coded reflected a personal bias against the concept moreso than anything, since I dropped the hard-coding of words entirely a couple years ago (we discussed this in the past). Depending on the nature of what you're developing, hard-coding may be necessary, but I feel as though hard-coding words/phrases into an artificial conversational agent is a concept/practice that is quickly becoming outdated.
The only text that is definitively hard-coded into my project is the space character, for parsing between words, and I would ultimately like to drop that as well; it's just impractical to do so anytime soon.
There are also many features which I have not yet switched on.
There is an algorithm in there which allows it to read stuff from the internet, automatically, when it believes it is appropriate, but right now, I haven't switched it on, as I want to bring certain features on-line, one at a time...not all at the same time.
At present, the AICore is able to tell (with around 80% certainty if a fact is true or false (by looking up on the internet). It can do this automatically, but I have not switched this algorithm on.
There are also some other algorithms which have not yet been switched on - too many to speak of - and this is the reason why there is so much code (everything is learnt and very little is hard-coded). Had I hard-coded a lot sentences, the number of lines of code, would've been significantly lower.
That makes sense.
By the way Mikh, do you have a website for your work...I'd like to take a look at it.
I presently do not have any of my projects or code available online, though I'm looking to upload them to a website or something in the near future.
I'm also planning on creating a topic here sooner or later just to outline the specific details of algorithms, functions, classes, processes, etc. in my project and discuss them with other users.