rewrote the keyword decoder to use boost unordered_set