Итак, я видел эту потрясающую обработку естественного языка в javascript, и мне интересно, как я могу сделать базовую контекстуализацию?
Скажем, например, я хочу найти время.
Делая что-то вроде этого:
var word = nlp('What the time')
console.log(word.match('time').found)
Я получаю true
логическое значение, так как слово time
присутствует. Но то, что я хотел сделать, например,
nlp('What the time')
и nlp('What time is it')
значение будет истинным, но если nlp('Time is gold')
значение будет ложным, так как пользователь не запрашивал время.
Возможно ли это с помощью этой библиотеки? Любая помощь приветствуется.
Похоже на то, что вы хотите сделать, это Intent Recognition, которое обычно рассматривается как проблема классификации. В этой статье дается обзор одного из способов сделать это; взгляните на данные обучения:
training_data.append({"class":"greeting", "sentence":"how are you?"})
training_data.append({"class":"greeting", "sentence":"how is your day?"})
training_data.append({"class":"greeting", "sentence":"good day"})
training_data.append({"class":"greeting", "sentence":"how is it going today?"})
training_data.append({"class":"goodbye", "sentence":"have a nice day"})
training_data.append({"class":"goodbye", "sentence":"see you later"})
training_data.append({"class":"goodbye", "sentence":"have a nice day"})
training_data.append({"class":"goodbye", "sentence":"talk to you soon"})
training_data.append({"class":"sandwich", "sentence":"make me a sandwich"})
training_data.append({"class":"sandwich", "sentence":"can you make a sandwich?"})
training_data.append({"class":"sandwich", "sentence":"having a sandwich today?"})
training_data.append({"class":"sandwich", "sentence":"what for lunch?"})
Компромисс не имеет функций для классификации текста, поэтому он вам не поможет.
да, как сказал polm23, это похоже на проблему статистической классификации.
но, если бы вы знали, (или машинные) шаблоны предложений, которые предполагают намерение, вы можете найти их в компромиссе с синтаксисом соответствия
//what time is..
if(doc.has('#QuestionWord time #Copula')){
return true
}
//time is fun..
if(doc.has('time #Copula #Adjective')){
return false
}