Natural Language Processing (NLP) is the holy grail for someone who makes their living in the world of words, as I do. Over the last several years, researchers have brought us more advances in this area than in the prior 25 years of my experience in the field. But there are still problems.
The word "run" is a killer. Look it up in a dictionary (LOL!! OK, do a Google search for the word's various meanings) and you'll find it has more meanings than almost any other word. When we're asking the computer to analyze what someone says, how in the world do we differentiate the exact meaning intended from all the possible meanings?
Think of how YOU do it. Perhaps you're not paying super close attention to a conversation and you hear someone ask, "Is he going to run?" The plain English does not give you any guidance as to whether the speaker is asking if "he" is going to flee, participate in a foot race, stand for election, or any other sensible meaning. To figure it out, you'd process the context of the statement.
As a person in the room, you'd have access to context that, for now, computers don't have access to. You'd be able to see whether the speaker was in a courtroom nodding toward a prisoner (flee) or an elected judge (election) or an athletic client (footrace). You'd process that context backwards and then forward into the sentence to ascertain the meaning. You might get it wrong...the speaker might wonder if the judge might flee or the prisoner might stand for election...but you'd probably get it right.
Some researchers at the Allen Institute for Artificial Intelligence at Paul G. Allen School for Computer Science and Engineering at the University of Washington have developed an approach to addressing this problem. The call it "deep contextualized word representations" and have written about it and developed software to implement their ideas. Lucky for us, they have created a repository of open-source code so that the rest of us can take advantage of these advances in NLP.
No comments:
Post a Comment