我想在使用node.js的文本文件上使用NLP,然后将其存储在某些输出文件中。如果需要更多信息,请告诉我。
我正在使用npm natural和PorterStemmer进行相同操作,但没有成功。
function doStem(data){
var natural = require('natural');
//do procesing using WordTokenizer & PorterStemmer.
return nData;
}
请让我知道我是否使用了正确的方法,或者让我知道是否有任何需要纠正的地方。
更新:
function doStemming(data){
var natural = require('natural');
var tokenizer = new natural.WordTokenizer();
var tokens = tokenizer.tokenize(data);
stemmer = natural.PorterStemmer(data);
var nData = stemmer.stem(tokens);
//console.log(nData);
return nData;
}
这就是我正在做的事情。请提供一些有关如何使用标记化和PorterStemmer将其执行到文本文件而不是在任何特定单词上的想法
答案 0 :(得分:1)
这是您的代码段和您的错误(感谢您同时发布):
代码:
function doStemming(data){
var natural = require('natural');
var tokenizer = new natural.WordTokenizer();
var tokens = tokenizer.tokenize(data);
stemmer = natural.PorterStemmer(data);
var nData = stemmer.stem(tokens);
//console.log(nData);
return nData;
}
错误:
stemmer = natural.PorterStemmer(data);
^ TypeError: natural.PorterStemmer is not a function
at doStemming (/home/vishabh/purify/stemer.js:39:21)
at ReadStream.<anonymous> (/home/vishabh/purify/stemer.js:20:21)
at emitOne (events.js:116:13)
at ReadStream.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at ReadStream.Readable.push (_stream_readable.js:208:10)
at fs.read (fs.js:2051:12)
原因:像错误消息中所述:“ natural.PorterStemmer()”不是一种方法。而是“ natural.PorterStemmer”是一个对象。
看这里:
https://www.npmjs.com/package/natural#stemmers
natural.PorterStemmer.attach(); console.log("i am waking up to the sounds of chainsaws".tokenizeAndStem()); console.log("chainsaws".stem());
换句话说,您可以尝试如下操作:
function doStemming(data){
var natural = require('natural');
var tokenizer = new natural.WordTokenizer();
var tokens = tokenizer.tokenize(data);
var nData = natural.PorterStemmer.stem(tokens);
console.log(nData);
return nData;
}