How to build your own Evernote's Descriptive Search

04 Feb 2014 news

Today, Evernote announced a new feature called Descriptive Search.

Descriptive Search works by allowing you to describe what you’re looking for using common terms, which makes creating a complex search incredibly straightforward.

Here are some example searches. Just type them into the Evernote for Mac search bar:

“Images from Prague since 2012″
This search will bring up all of your notes since 2012 that contain images that have Prague as the location.

“Recipes with photos tagged vegetarian”
This search will show any notes that Evernote classifies as a recipe that contain an image and have the tag ‘vegetarian.’

As a longtime Evernote user, I think that’s a great feature.

If you want to build this kind of search for your own app or website, you have three options:

  1. Get a degree in NLP and write a grammar that covers all the potential queries (hint: you don’t want to do that)
  2. Pay $200K to a NLP company to do it for you
  3. Spend 5 minutes with Wit and launch!

image alt text

So how would that look like in Wit? You just need one intent, and one entity per search dimension (such as date, location, etc.). Give Wit a dozen examples and it should be enough to get started. Then, use your Wit Inbox to check how your users actually want to describe their search, and adapt/improve.

If you’re interested to try this approach, we can help you.

Team Wit (@WitNL)

Update on intents and entities naming

25 Dec 2013 update

You may have noticed that your intent names have changed this morning. If you had an intent named My Super Intent, it’s now my_super_intent. Rest assured, the name used for the API JSON output did not change, so your client code is still working, you don’t need to change anything.

Moving forward:

  • Intents and entities names are restricted to basically what looks like a C functions name (only alphabetic characters, digits and underscore are allowed, and you cannot start with a digit ; precisely: /[a-zA-Z_][a-zA-Z0-9_]+/).
  • The API JSON output will always match the name you see in the web console – in other words if you change the name in the console, the API output will match your change.

We traded a little bit of human readability in the console in exchange for:

  • Simplicity: the fact that there were two names, one in the console and one for the JSON, was a significant source of confusion for many of you (see for instance Github issues #6, #20, #29, #31)
  • Referenceability: now we’ll be able to reference things like /myinstance/intents/coolintent and /myinstance/entities/uberentity . This will be a cornerstone for a big, major feature we’ve been cooking for months, and planning to release early next year. We are so excited – stay tuned!

Team Wit (@WitNL)

Thanks for your support in 2013

24 Dec 2013 community

Thank you! …for making 2013 such a great start for Wit.

A few milestones we’ve reached since the start of the alpha program 3 months ago:

You’re using Wit to voice-enable home automation on Raspberry Pi, robots on ROS, IVR systems with weird telco protocols, Google Glass that now understand more than “OK Glass”, Pebble watches…

We are eager to give back to the community the incredible amount of high quality data you have contributed to Wit. From low-level on-device speech processing modules to a revolutionary server-side training approach, we have a lot of stuff in the pipeline. Stay tuned, and merry Christmas!

Team Wit (@WitNL)

iOS SDK and Speech API

05 Nov 2013 feature, speech, ios

Last week, we conducted a survey in the community to try and prioritize our roadmap. The response has been very positive and we were able to gather useful feedback and interesting suggestions.

Since then, we’ve been hard at work. We chose to focus on the two most solicited items: support for iOS and speech integration.

Today, we are pleased to announce two new features in the Wit ecosystem:

  • a way to send audio samples directly to the Wit API, instead of text
  • a brand new Wit SDK for iOS
Sending audio samples via HTTP

At the lowest level, we have set up a new HTTP route (POST /message). This allows you to send a voice file to the API instead of raw text.

More information is available in the docs.

Wit SDK for iOS

Building on this new HTTP route, we were able to release Wit SDK for iOS.

We paid particular attention to make the integration quick and painless for the developer. That’s why we provide the SDK as a Cocoa Pod and as a binary .framework file.

What’s next?

We are working on some exciting research and you can expect to hear more from Wit in the coming weeks. In the meantime, as always, we pay close attention to our developers’ feedback and will prioritize our roadmap accordingly.

Team Wit (@WitNL)

Entities with Roles

25 Oct 2013 feature, console, entities

Imagine your user says Find me a ticket from Paris to Marseille.

You can use wit/location to capture both “Paris” and “Marseille”, but which one is the origin, which one is the destination? Actually these two entities have the same type, but they play a different role in the intent.

Training Wit with wit/location:origin (read wit/location with the role origin) on Paris, and wit/location:destination on Marseille, you’ll get:

image alt text

Another typical use case is when you need to capture a quantity or a number of something particular. If you just use wit/number without any role, you run the risk to capture any number in the expression, including numbers that have nothing to do with what you want to capture:

image alt text

Wrong! “18” is not a number of bedrooms! If you use wit/number:bedrooms instead, which means: Find me numbers that have a “number of bedrooms” role in the sentence, then you’ll get: image alt text

Check the documentation to learn how to use roles in your instance!

Team Wit (@WitNL)