1. A system for matching large sets of words, the system comprising: one or more processors; and a non-transitory computer readable medium storing a plurality of instructions, which when executed, cause the one or more processors to: store a plurality of word phrases in a phrase-based data structure; store each word in the phrase-based data structure as a corresponding keyword in a keyword-based data structure, wherein each corresponding keyword is associated with corresponding usage attributes identifying use of a corresponding word in a corresponding word phrase in the phrase-based data structure; store, for each word in the phrase-based data structure, any corresponding preceding words associated with a corresponding keyword, and a mapping from any corresponding preceding words to a corresponding word phrase; determine whether a word from an inputted word string matches any keyword in the keyword-based data structure; determine whether any corresponding preceding words associated with any matching keyword comprises a preceding word which precedes the matching word in the word string in response to a determination that the word in the word string matches any keyword in the keyword-based data structure; update corresponding match attributes in a match-based data structure in response to a determination that any corresponding preceding words associated with any matching keyword comprises the preceding word which precedes the matching word in the word string, wherein the corresponding match attributes indicate use of the matching word in the word string and use of the matching word in a corresponding word phrase in the phrase-based data structure; determine, based on the usage attributes and the match attributes associated with a plurality of matching words, whether at least one of the word phrases in the phrase-based data structure is present in the word string.