Javascript - 搜索千言万语的最有效方法?

时间:2017-04-13 16:32:51

标签: javascript algorithm search text

语言本身并不重要,但我认为我坚持使用Javascript。

基本上,我有成千上万的评论"每个月都希望有一个天真的快乐评估'通过基于在这些评论中搜索10,000个单词的自动化(每个评论的平均字数为21个单词,到目前为止所有内容)。

这个公式的运作方式(从Hedonometer借来的) - 就是“快乐”。文本中每个单词的得分(如果在10k列表中找到)并对其进行平均。

我会在这里测试一些事情,然后在结果中进行修改,但我甚至不知道从哪里开始。似乎非常繁重的数据提升(虽然每个评论当然只需要做一次) - 也许它更适合R或SQL(可能不是),但不确定。

我认为这个问题有时被称为“问题”。或“'术语频率饱和度'。

2 个答案:

答案 0 :(得分:1)

我肯定会选择Python's Natural Language Toolkit (NLTK)它带有一系列功能,可以让您的生活更轻松,如文字频率,删除重复项,删除停用词,查找同义词等等,这个想法正在减少你的文本大小尽可能地进行情绪分析。

在类似的项目中,我的方法是:

  1. 删除中性词,代词,介词,决定者,名字等
  2. 删除重复项。
  3. 在我进入文本时检查单词同义词,并将其从文本的其余部分中删除。
  4. 动态创建一个段落的情绪阈值分数,所以一旦达到该分数,我就会停止处理该段落并转到下一个段落,整个文本也是如此。
  5. 希望这有效!

答案 1 :(得分:1)

你可以用你的单词创建一个哈希表,如下所示(缩写):

let wordRanks = {'hate':-100,'love':100,'ok':10};

然后有一个像这样的字符串并将其分成单词。

let str = `I hate love it's just ok`;
let words = str.split(' ');

然后你可以迭代这些单词并得到一个分数:

let commentScore = 0;
words.forEach(function(word){
  if(wordRanks[word]){
    commentScore += parseInt(wordRanks[word])
  }
});
console.log(commentScore); //should be 10

使用哈希表对于查找来说不应该是计算上昂贵的。应该工作,虽然你可能不得不更好地分割单词以删除尾随标点符号,因为我在初始代码中的爱之后有一个逗号,并且它给出了错误的结果,因为没有哈希表匹配'爱,&# 39;