I am the author of the article and also the designer of the NLP system. If you're asking about how the mentions of the medical concepts (as defined in the curated knowledge base) are extracted from user messages then here is a short explanation.
The bot uses an entity recognition engine for this. The engine is available via API [1].
The engine itself uses dictionary phrases from the knowledge base and a custom matching strategy that operates on dependency graphs, which allows to abstract from some surface details (e.g., understand that “pain in my left leg” is “pain in leg”). It also contains a modified version of the DepNeg algorithm [2] to detect negated mentions (“I don't have headache”, “no history of chest pain”).
I'm curious if some of those platforms allow to write custom code for processing of the raw message. Either to embed the code directly on their server or to expose a custom webhook.
For instance, if I were to write such a diagnostic chatbot as described in the article but would prefer to use a service such as those to take care of the integrations with various platforms, message queueing, tracking basic stats etc.
Actually this is right, so the information in the article is somewhat incorrect. Thanks for spotting this!
There is however an issue with the ActiveMQ implementation: once a user is assigned to a consumer, it is hard to make ActiveMQ rebalance it. At least by default the load-balancing does not take place until a consumer is dead. In case of a chat bot, some users may be returning, while others may quickly go away, leading to drastic imbalances. Apollo does the balancing perfectly out-of-the-box.
That's a very good point indeed. In that particular case the diagnostic chatbot is a proof-of-concept to grab attention to the diagnosis+NLP API offered by Infermedica, and also serve as an example app.
The bot uses an entity recognition engine for this. The engine is available via API [1]. The engine itself uses dictionary phrases from the knowledge base and a custom matching strategy that operates on dependency graphs, which allows to abstract from some surface details (e.g., understand that “pain in my left leg” is “pain in leg”). It also contains a modified version of the DepNeg algorithm [2] to detect negated mentions (“I don't have headache”, “no history of chest pain”).
[1] https://developer.infermedica.com/docs/nlp [2] http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3392064/