From my own testing, it would seem that Echo isn't really an AI under the hood. It does not have natural language processing capabilities. It behaves more like pattern matching or regular expression matching. For example, I can say "Alexa, shama lama ding dong what's the weather?" Alexa would match the keywords "what" and "weather" and then give me the weather. Everything else I said is ignored.
This would also explain why it is very picky when it comes to smart devices. If you have devices named "kitchen light", "bedroom light", "master bedroom light", "garage light" and so on, they all become keywords. And the fact that all these keywords contain the word "light" would cause Alexa to ask "which device do you want" or it can't find the correct device at all.
Certain keywords are weighted more heavily than others. Some heavily weighted keywords are: weather, turn on, turn off, open, close, time, where, etc.
Example: If I say "Alexa, close McDonalds" the response I would get is the location and hours of the nearest McDonalds. Alexa matched the keyword "close" so it thinks that I want to know when the store closes. However, if I say "open McDonalds", it thinks that the "open" keyword is to be used to start a skill rather than getting the location and hours of the nearest McDonalds. I bet if I were to name a device "weather light" Alexa wouldn't find it because "weather" is much more heavily weighted against any device names.
So in my opinion Alexa is dumb. It doesn't do any real natural language processing. But it does control smart devices quite well if you name your smart devices appropriately.
Google Home on the other hand has really good natural language processing. They've been doing it on their search engine and on Android for years. But support for smart devices is very lacking. They may catch up eventually.