I enjoyed this. One addition to the strength of Rule Based over ML is control. The Tay episode, where twitter trolls turned a friendly millennial AI into a holocaust denying facist in 24 hours, and again after a “fix”; is an example of the value of retaining control. At a less dramatic level, but far more significant, there are situations where predictability is critical. If you have a mental health related bot, you want to be extremely careful with how you respond to suicidal inputs. 75% confidence is not an option.
On the other hand ML can be a fantastic supplement to a mature rule based system. One of the limitations of scripting dialogue is that a small number of people get to guess a wide range of possibilities, and impose their schemas on concepts and taxonomies. As per above, this has huge advantages, but also limitations. No individual has perfect domain knowledge, and users will always surprise you. Using ML to spot patterns in users’ interactions can help steer scripters with regard to gaps, missing categories, emphases, unnoticed nodes, etc. It can also be used to harness big data in service of rule creation and dialogic strategies.
Finally, I thought that the piece identified very well the advantages of CS over ML, but perhaps did not really cover the pain points for CS programmers, beside the learning curve. While it is true that we can work with much smaller samples more effectively, we also take a lot longer to do so. Building a sophisticated, or even a credible, conversational agent (as opposed to command bot or the like), equipped to handle free dialogue without tedious backstops, is not a trivial task. It takes a lot of skilled hours, and the scale of the task can be easily under-estimated IMO. It can also be done poorly - human control is no guarantee of quality! The lack of adoption means that building any enterprise level CS bot will hit a skill wall very early, limiting speed and scale. In an environment with huge skill gaps in mainstream programming languages, where programmer can pretty much pick their jobs, it is hard to motivate someone to learn CS from scratch, become good at it, and build in a relative vacuum. With ML talent is expensive, but more easily found. A further consequence is that there is a tiny community around it, with very few resources (a docker repo here, a node implementation there, some syntax highlighting over there). A few forks with a few commits beside your own. The superb documentation is the CS saviour, and the responsiveness of this Forum.
I am a huge fan of CS (will be doing a Meet-up presentation on it for one of the stronger PHP communities in UK soon); but I am also aware that it has its own challenges and counter-points that might make it sensible for someone building a simple faq or command bot to use one of the quick and dirty solutions, vs the magic of CS.