Robots, ChatBots, NLP and NLU – What is all about?

We’re all familiar with ‘virtual assistant’ chats that appears in most of the commercial sites.

You can see examples below:

The common denominator is that all of them are based on pre-defined set of automated rules that are trying to guide you through predefined path in order to answer you or promote some sales activities.

Those bots can’t really understand your questions and solve the issue but redirect it to relevant agent or line of business instead of IVR menu.

The root cause for this is the limitation of techniques such NLP and NLU from understanding the real intent and the flow and context of the conversation.

NLP – stands for Natural Language Processing. Started around 1950 and until today there is no much progress with that.

The main challenge is to bring the right answer on a specific domain with limited knowledge base.

NLU – Stands for Natural Language Understanding and the difference between NLP and NLU is mainly that NLU is sub domain which aims to deal with the understanding part of the language and not in the processing itself.

Many companies and software techniques aims to solve this issue by tackling part of the problem such as: Identify part of speech, Speech recognition and Linguistic processing.

Although computing power grow exponentially the NL domain didn’t have such a break and the growth is almost linear.

In order to improve the NL results many companies are ‘helping’ the NL technique by adding some heuristics such as knowledge base and pre-defined definitions and limitations. This can help the vendor on specific domains and as first answer for a customer but not more than that.

In order to make a break through there are two major factors that need to be break:

1. Unlimited unique data with various domains and with concrete answers

2. Some feedback from human activity that can help with A/B testing like approach

Will give some examples and more details in one of my upcoming posts.

 

Have great week,

Moshe

SaaS – the hidden advantage

I assume that all of us are familiar with SaaS (Software as a Service) solution.

While moving or building new software in SaaS fashion there are many considerations regarding architecture and software development.

It starts from the need to be able to support high availability and distributed system from the beginning and ends up by decoupling front end from server side.

Many organizations and software products should do complete mind shift and re-write of their code while moving from on-premise solution to SaaS one.

Apart from code changes it requires also mind shift in DevOps and build operations. Continues Integration (CI) is a must in SaaS and gradual deployment is key factor.

I found out that one of the biggest advantages of SaaS is the maintenance and upgrade flow.

In most of the cases product lead company has tens or hundreds of companies that requires maintenance and support for their product.

It’s obvious that each set of customers have specific product release differ from other customers.

Maintaining tens of different releases and sub-releases on many customers is in most of the cases night mare.

It’s taking time to release the specific software, debug and fix each and every branch.

While implementing SaaS with the right DevOps and CI it’s enable you full control on all customers.

As a manager you can decide which customers will get the new release and be served as ‘beta’ testers for rest of the customers and which one can stay with previous release for couple of weeks.

Deployment is done from one centralized place without customer IT issues and headache.

This is of course under the assumption you choose the right infrastructure and right tools to deploy. We’ll deal with it in one of our nearest posts.

 

If you’re already deploying SaaS solutions I’ll be happy to hear your voice and feedback on below or in my LinkedIn page.

 

Have a great week,

Moshe

Virtualization – the challenge and the opportunity

In the recent years most of us delivered software into virtualized environments and not to physical hosted machines.

It can be vmware (www.wmware.com) , openstack (https://www.openstack.org/) or virtualbox (https://www.virtualbox.org/).

The common for these infrastructure is that from now on it’s not so important what is the hardware you’re running on. It’s much more important what is the virtual parameters you’re running with.

You can run distributed environment on any hosting solution like Amazon AWS (http://aws.amazon.com/) DigitalOcean (https://www.digitalocean.com) or 1and1 (http://www.1and1.com/).

The benefits are endless and move from more flexability into full management and cost effective or resources.

Apart from this we should consider two main factors:

1. At the end there is overhead in running virtulized. It can 5-10 % of overhead only but it can be in some cases 30-50% due to special requirements and wrong configuration. You should know what are your main needs (Memory, CPU or Disk) and work accordingly.

2. For IT experts this move is not so trivial. From domain specific knowledge IT should support now large variety of software and configuration that are look the same but might behave diffrently. This is a challenge and opportunity.

Many organizations felt to understand this mind shift and tried to adjust current paradigms into this new world.

In order to benefit from virtualization both IT and software development need to be changed.

Interesting article can be found here – (New Technical Roles Emerge for the Cloud Era: The Rise of the Cross-Domain Expert).

Also software development should be changed and I’ll discuss it in one of my upcoming posts.

 

Have nice week,

Moshe