使用node.js和自然语言处理来处理多个单词短语

我为node.js使用了非常酷的自然库。

我正在试图训练我的分类器来匹配短语user experience 。 我的问题是,如果我做这样的事情:

 classifier.addDocument(['user experience'], 'ux'); 

它不匹配2个单词短语,我相信,因为它标记的话。 如果我做这样的事情:

 classifier.addDocument(['user', 'experience'], 'ux'); 

它的工作方式就像我想要的那样,但是我的问题是,我不想仅仅匹配user这个词,因为一篇文章可能会提及user多次包含这个词,它可能与用户体验无关,导致分类不准确。 所以,我的问题是如何匹配使用NLP的2个或更多的单词短语?

感谢您提前帮助。

你应该看看n-gram,特别是在这种情况下,它被称为bigram,两个令牌的序列。 https://github.com/NaturalNode/natural#bigrams

我没有使用特定的库(不要认为nodejs是最好的NLP语言,它仍然处于早期阶段,我build议你为NLP使用更成熟的库(NLTK)/语言(Python)。我想这只是为了testing或一些小项目)。

无论如何,从手册来看,你也许可以做类似的事情

 classifier.addDocument([['user', 'experience']], 'ux'); 

为每个要添加的序列添加括号。

也许来不及,但…

我使用自然,我认为你不需要传递数组,只需要:

 classifier.addDocument('user experience', 'ux'); 

这应该工作。 基本上只是删除括号。

我认为最好的办法是把你的文本当作一个对象数组来处理。 喜欢这个:

 var natural = require('natural'); var classifier = //Here comes the classifier that you had to choose var trainingData = [{text: 'user experience', label: 'ux'}] var yourTestData = []; trainingData.forEach(function(item){ // finally you add the data to classifier classifier.addDocument(item.text, item.label); });