使用javascript对特定单词的词频率计数器

时间:2016-11-15 17:54:20

标签: javascript

我需要计算文本中预定单词(wordlist)的数量。这是我到目前为止所做的:

function frequencies(text, wordlist){
  var words = text.split(/\s/);
  var freqMap = {};
  words.forEach(function(w){
    if (!freqMap[w] && wordlist){
      freqMap[w] = 0;
    }
    freqMap[w] += 1;
  });
  return freqMap;

}

目前它会计算给定文本中的所有单词,如何只计算单词列表中给出的单词?

2 个答案:

答案 0 :(得分:0)

使用Array#indexOf方法(或Array#includes方法)检查​​单词是否在给定列表中。

function frequencies(text, wordlist) {
  var words = text.split(/\s/);
  var freqMap = {};
  words.forEach(function(w) {
    if (wordlist && wordlist.indexOf(w) > -1) { // or wordlist.includes(w)
      if (!freqMap[w]) {
        freqMap[w] = 0;
      }
      freqMap[w] += 1;
    }
  });
  return freqMap;
}

答案 1 :(得分:0)

此示例说明了文本中的一些基本标点符号。它将删除所述标点符号,拆分空格,然后使用reduce来构建您想要的对象。

let wordlist = ['hello', 'bob', 'you', 'later'];
let text = 'hello bob, how are you doing? i hope you are doing well. see you later.';

function frequencies(text, wordlist) {
  return text.replace(/(\.|\?|,)/g, '').split(' ').reduce(function(prev, curr) {
    if (wordlist.includes(curr)) {
      if (prev[curr])
        prev[curr]++;
      else
        prev[curr] = 1;
    }
    return prev;
  }, {});
}

console.log(frequencies(text, wordlist))