当前位置:   article > 正文

nodeJS 获取前端高频词

js提取高频词语

nodeJS 获取前端高频词

最近在看英文文献,无奈各种生词比较多,每次看一段就需要不断查词典,很烦人。

所以,我想把出现的高频生词先找出来,统一查好,这样阅读就更快了。

废话不多说,直接上代码

1、准备一篇英文文章

我找到一篇介绍 ECMA6 的文章 leanpub-auto-the-road-to-ecmascript-6

原始网页:https://leanpub.com/understandinges6/read#leanpub-auto-the-road-to-ecmascript-6

文件大小:587KB,我已经转存到本地(也可以直接爬取网页)

2、读取文件内容,转换成字符串

  1. function getFile(filePath) {
  2. fs.readFile(filePath, (err, data) => {
  3. if (err) console.log(err);
  4. if (data) {
  5. // data is array buffer, so use toString to transfer to string
  6. return data.toString();
  7. }
  8. });
  9. }

3、处理字符串,获取高频词

  1. // 获取高频词
  2. function getFrequence(str) {
  3. // 删除特殊符号(只保留字母数字)
  4. str = str.replace(/[^A-Za-z0-9\s]/ig, '').replace(/[\n+]/ig, '');
  5. // 转换成数组
  6. var arr = str.split(' ');
  7. var obj = {};
  8. arr.forEach((item) => {
  9. let key = item.toLowerCase();
  10. if (!obj[key]) {
  11. obj[key] = 1;
  12. } else {
  13. obj[key] = obj[key] + 1;
  14. }
  15. });
  16. // 获取出现次数最多的几个情况
  17. var arr2 = [];
  18. for (let key in obj) {
  19. let times = obj[key];
  20. // 这个参数可以调整(现在统计出现次数超过10次的单词)
  21. if (times > 10) {
  22. arr2.push({ times, key });
  23. }
  24. }
  25. arr2.sort((a, b) => a.times > b.times ? -1 : 1);
  26. var arr3 = [];
  27. arr2.forEach(item => {
  28. arr3.push(item.key);
  29. // arr3.push(item.times);
  30. // 统计次数需要这个代码,如果仅仅是背单词就不需要这个代码
  31. arr3.push('\n');
  32. });
  33. return arr3.join(' ');
  34. }

4、将高频词写入外部文件中

  1. function writeFile(str) {
  2. fs.writeFile('./result.txt', str, function(err){
  3. if (err) {
  4. console.log('write file error');
  5. } else {
  6. console.log('write file success');
  7. }
  8. });
  9. }

前面的是语法词语,这部分略过(因为这部分字符长度较短,可以直接根据长度过滤这部分词汇)

  1. the 5155
  2. to 2361
  3. a 1951
  4. is 1637
  5. and 1384
  6. of 1366
  7. in 1319
  8. that 983
  9. an 816
  10. this 796

后面的就是高频专业英语单词,这部分就需要我们熟练记忆啦

  1. call 177
  2. string 176
  3. promise 174
  4. arrays 172
  5. also 171
  6. second 169
  7. key 165
  8. argument 160
  9. objects 159
  10. result 154
  11. any 153
  12. functions 148
  13. into 147
  14. two 146
  15. properties 145
  16. arguments 142
  17. variable 139
  18. passed 137
  19. syntax 136
  20. instance 135
  21. inside 134
  22. prototype 131

如果未来需要读英文书籍或者文档,那么首先用这个工具获取高频词,然后学习吧!

思考

1、直接使用node爬虫爬取界面,然后爬取多个主流网页,这样获取的高频词库就比较统计意义,不受极端值的影响了。

2、调用词典的 API,然后把生词查出来,或者写到在线的单词本中?

百度词典可以获取翻译的 API

https://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91/%E7%99%BE%E5%BA%A6%E8%AF%8D%E5%85%B8api%E4%BB%8B%E7%BB%8D&oldid=16877

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/359135
推荐阅读
相关标签
  

闽ICP备14008679号