2016-12-11 24 views
0

我正在尝试用Angular,Node和Express构建一个twitter情绪分析工具。现在我能够抓住用户的推文,删除*一些特殊字符,然后当我调用情感函数时,它返回input.lowercase不是一个函数。我尝试使用Sentimental包,而它返回了一个非常类似的错误。Twitter的情绪包问题npm

router.post("/postUsername", function(req, res){ 
    console.log(req.body.userName); 
    var client = new Twitter({ 
    consumer_key: , 
    consumer_secret: '', 
    access_token_key: '', 
    access_token_secret: '' 
    }); 


    client.get('statuses/user_timeline', {screen_name: req.body.userName, count:20}, function(error, tweets, response) { 
    if (!error) { 
     var concatenatedTweets = analyzeIt.analyzeIt(tweets); 
     console.log(concatenatedTweets); 
     var score = sentiment(concatenatedTweets); 
     console.log(score); 
     } 
    }); 
}); 

和我分析它的功能*功能不工作我会想删除的东西

function analyzeIt(data) { 
    return data.map(function(item){ 
    var puncutaionLess = item.text.replace("/[.,#!$%^&*;:{}=-_`~()]/[email protected]?" , ''); 
    var finalString = puncutaionLess.replace(/\s{2,}/g," "); 
    return finalString.replace("#@" , ""); 
    }); 
}; 

任何帮助的方式会非常赞赏?

回答

0

您的常规expressios很奇怪。

首先在javascript中没有正则表达式的引号。

你也没有逃脱特殊的字符:

item.text.replace("/[.,#!$%^&*;:{}=-_`~()]/[email protected]?" , ''); 

应该是:

item.text.replace(/[\.,#!$%^&*;:{}=\-_`~()]/g , ''); 

通知您可能要在那里过添加[].

逃生:

因此,例如:

text = "hello[!] there!"; 
 
text = text.replace(/[\.\[\],#!$%^&*;:{}=\-_`~()]/g , ''); 
 

 
console.log(text)

+0

实现你的修复程序后,还在说input.toLowercase是不是在情绪功能分析功能。 – Quesofat

+0

'toLowerCase'是一个String方法(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase)不确定你在使用它,(它也是不要将它放在'toLowerCase'中) –

+0

并且代码中没有任何地方显示“toLowerCase”,所以我甚至不知道它与这个问题有什么关系 –