使用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); });