如何处理node.js中的文本文件?

时间:2019-07-01 17:01:02

标签: node.js nlp stemming porter-stemmer

我想在使用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将其执行到文本文件而不是在任何特定单词上的想法

1 个答案:

答案 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; 
}