我用的很酷 自然 node.js的库。
我正在尝试训练我的分类器来匹配这个短语 user experience
。我的问题是,如果我做这样的事情:
classifier.addDocument(['user experience'], 'ux');
它不匹配2个单词短语,我相信因为它标记了单词。如果我做这样的事情:
classifier.addDocument(['user', 'experience'], 'ux');
它的工作方式就像我想要的那样,但我的问题是,我不想只是匹配这个词 user
因为一篇文章可以提到包括这个词 user
多次,它可能与用户体验无关,这将导致不准确的分类。所以,我的问题是如何使用NLP匹配2个或更多单词短语?
谢谢你的帮助提前。
你应该看看n-gram,特别是在这种情况下,它被称为二元组,一系列两个标记。
https://github.com/NaturalNode/natural#bigrams
我没有使用过那个特定的库(不要认为nodejs是NLP的最佳语言,它还处于早期阶段,我建议你为NLP使用更成熟的库(NLTK)/语言(python)。虽然我想这对测试或一些小项目来说很好。
无论如何,从手册来看,你可能会做类似的事情
classifier.addDocument([['user', 'experience']], 'ux');
为要添加的每个序列添加括号。
也许为时已晚......
我使用Natural,我认为你不需要传递数组,只需:
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);
});