3 ms·
This is really interesting hellcow. You've done an impressive amount of work on this. I just wanted to ask about the intelligence built into the bot. I dug thr
by codelitt 11y ago
This is really interesting hellcow. You've done an impressive amount of work on this.
I just wanted to ask about the intelligence built into the bot. I dug through the code a bit (great documentation btw) and it seems that this is using a state machine you've written and custom plugins for different scenarios. How would one account for situations were a case keyword in a plugin is used in a different context? Say for example, I ask "What street number did you say?" to the bot with this plugin^1. It seems that these are items that would trip it up?
Also these bots would not "learn" or get better over time without direct human input correct?
I hope these don't sound like critiques. They're not. Just generally curious about how all of this is put together - particularly the state machine and then also how the plugins can be built (and improved).
[1]: https://github.com/itsabot/plugin_restaurants/blob/master/restaurants.go#L167 https://github.com/itsabot/plugin_restaurants/blob/master/re...
- hellcow 11y agoGreat points. The restaurants plugin you cited is using an outdated API. The new API uses triggers rather than a switch statement, which requires a combination of a Command and an Object to trigger a plugin's response (see plugin_weather for the modern API). This helps eliminate many false positive matches. But to your point, you're right, that scenario would still trip it up. I plan to add support for matching on n-grams going forward, so you could define different behavior for "street number" vs "phone number" and it would match the longest (in most cases the most specific) option when multiple matches are detected. It's actually similar to how many routers work. You're also right that Abot plugins as they stand now do not improve or learn automatically over time. I've done some work on a training system which will enable a Facebook M or Magic-style human-aided training backend. It'll be a plugin just like any other which will eventually be hooked up to a neural net with optional centralized training (so you don't need a GPU rig or tons of data to get started). An early version of that is probably going to be ready going into June with the v0.2 release. Thanks so much for the feedback. I'd love to continue this discussion and find ways to improve plugins and training. If you're interested, there's a mailing list here: https://groups.google.com/forum/#!forum/abot-discussion https://groups.google.com/forum/#!forum/abot-discussion
- codelitt 11y agoThank you so much for your reply. I'll have a look at the plugin_weather and see how that one works. Regarding the neural net, I think that's an important feature because the most difficult part about guessing triggers is, well, guessing. Our language is awfully diverse and I think you'll get better results in the long run. I've applied for membership to the mailing list. I'll keep my questions there.