5 ms·
You're going up the wrong tree entirely. What you're trying to do is one of the oldest ideas in computing, and it does not work. They keep trying it, and it kee
by markessien 18y ago
You're going up the wrong tree entirely. What you're trying to do is one of the oldest ideas in computing, and it does not work. They keep trying it, and it keeps failing. Not technically, but from a user point of view. Typing stuff out the way you want people to is not easy or convenient, and if there is even the hint of uncertainty, most people will prefer not to do it. Considering that you do not have a background in this, you will lots of unmatched items, and 2/10 fails will consitute too much uncertainty for your users.
I have two ideas for alternatives that may or may not work, but at least have not been tried as often:
1. Autocomplete. When the user is typing, autocomplete his message, such that there is always 100% certainty that the command will be executed properly. Also, simplify the syntax, so I write 'remind' : 'December ...' : 'Dentist'. Your syntax has to be consistent, so once learned, there is no relearning. I don't want to have to figure out what the system wants me to type in as a command.
2. Visual. Use blocks and lines to create the actions. Humans have a very good sense of geometry and relationships between physical objects. Leverage that to make your app. Models of physical things are one of the few things we can actually say is inherently intuitive for human beings.
- AvengerPenguin 18y agoDespite all my obvious love for NLP and grammars, I would actually like to echo markessien's point here. I agree that NLP might not be the best approach here, especially if you're having to learn all of it from scratch (I'm no expert but I learnt enough basics so that I could look into any aspect in more depth when it comes to it). My first suggestion would be to take a step back and think about what the system is and what is the easiest, fastest and most intuitive way to input dates. Brainstorm this and you will come up with good ideas like those above. I like the autocomplete idea and also there's no reason not to use some syntax like "Dentist @ 2pm", i.e. using @ to separate title from date. It's sufficient to indicate to the machine which is text and which is date info, but close enough to natural speech as well (also the @ is a very recognisable character now). One thing to note is that Google Calendar accepts expressions such as "Dentist at 2pm"; perhaps you can try that and see how you like how that works?
- fendale 18y agoAuto complete would be a good option, however I want people to be able to send the commands in emails (with the option on the web page too). Having started scanning about NLP, I can tell its a big area, and I don't think I want to invest lots of time into this. Perhaps a cutdown syntax is the way to go. For my small set of commands, all I have now are TODOs, Followups and Reminders. So a few ways of entering each of them and some thinking about dates should get me something usable. That said, I do have concerns about the ambiguity of what can be entered, and what to do with failed commands etc. Dates really are the pain point for entering things - date pickers are generally annoying, and a series of drop downs are a pain too and people write dates in so many different ways!
- markessien 18y agoHow about just using a fixed syntax: -- email start * Pick Milk * Buy Fags * Drop Children at Mary @ 16:00 --- Then use a python date parse to parse whatever comes after @. You don't need to split reminders or followups, because an @ symbol would automatically imply a reminder, innit?
- AvengerPenguin 18y agoAlso remember that some ways are impossible to tell apart. 12/10/2008, for example, is 12th October for us in the UK, but 10th December for Americans. There's simply no way to guess at which it is without some context or the user saying which. What that shows is that while NLP can make systems seem quite intelligent, it's really not a replacement for the user putting some thought into it too. Forms work nicely as they can force input into certain formats. I like NLP, so I always think systems could at least meet a human half way on this. However, even if we were talking face to face, there's some social expectation you'll try to make some sense (i.e. speak in English). You wouldn't just speak Spanish to me if I hadn't indicated I could speak Spanish. AI-like systems are meant to be intelligent, not psychic -- a point often forgotten by some people. A dialogue system would help uncertainties since it could ask for clarification (which, frankly, is all we humans do if something's not clear when talking to each other), but if you're talking over email, you really want to get it right the first time as it's not the fastest system. Again, off the top of my head: I'd say you could make it clear that the subject of the email has to be one of "reminder", "followup" or "todo"... then do some aggressive normalisation on the subject lines that come in (grab a Porter Stemmer or even just take the first 3/4 letters maybe) then force to upper or lower and then check against a massive list of synonyms. Then you simply have to bounce with a help notice if someone really still managed to enter something stupid. Examples: Subject: Reminder -> REMINDER -> REM -> matches rule for "REM/EVE/HOL" (Reminder, event, holiday) Subject: event -> EVENT -> EVE -> matches rule for "REM/EVE/HOL" Subject: follow-up -> FOLLOW-UP -> FOL -> matches rule for "FOL/REV" (follow-up, review) That sort of idea. It accounts for RaNDom CapITAlisation, uncertain hyphen-usage and plurals. Make those match rules long enough and you might get error rate pretty low indeed. I know you've probably already gone over this, but does it really need to be email? Is that the best interface? Is it worth taking a step back (going outside the box, as they say) and working out the most efficient method?
- mixmax 18y agoEntirely agree - natural language processing has been a holy grail for decades, and nobody has ever gotten it quite right. You're also right on the money with the notion that from a user perspective if there is a small chance of failure users will tend to distrust and ultimately discard the interface.