【问题标题】:converting list of words into frequency json将单词列表转换为频率 json
【发布时间】:2019-05-08 13:38:18
【问题描述】:

我编写了一个代码,它获取项目列表并输出一个带有唯一项目作为键和频率作为值的 json。

下面的代码在我测试时运行良好


const tokenFrequency = tokens =>{

  const setTokens=[...new Set(tokens)]
  return setTokens.reduce((obj, tok) => {
    const frequency   = tokens.reduce((count, word) =>word===tok?count+1:count, 0);

    const containsDigit = /\d+/;
    if (!containsDigit.test(tok)) {
      obj[tok.toLocaleLowerCase()] = frequency;
    }
    return obj;
  }, new Object());
}


喜欢

const x=["hello","hi","hi","whatsup","hey"]
console.log(tokenFrequency(x))

产生输出

{ hello: 1, hi: 2, whatsup: 1, hey: 1 }

但是当我尝试使用大量数据语料库的单词列表时,它似乎会产生错误的结果。

如果我输入一个列表长度为 14000+ 的单词,它会产生错误的结果。

示例: https://github.com/Nahdus/word2vecDataParsing/blob/master/corpous/listOfWords.txt当这个页面中的这个列表(上面链接)起作用时,单词“is”的频率是4,但实际频率是907。

为什么它对于大数据会这样? 如何解决这个问题?

【问题讨论】:

    标签: node.js json list data-processing


    【解决方案1】:

    您需要首先通过将toLowerCase() 应用于它们来规范化您的标记,或者通过一种方法来区分相同但仅大小写不同的单词。

    原因:

    您的小型数据集没有Is 字词(带有大写“i”)。大型数据集确实出现了Is(带有大写“i”),它显然具有频率4,这反过来又覆盖了您的小写is 的频率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2017-08-08
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      相关资源
      最近更新 更多