当前位置: 首页 > 科技观察

使用Node.js对文本内容进行切分和提取关键词

时间:2023-03-18 12:33:10 科技观察

众诚翻译的文章都有标签。用户可以根据标签快速筛选自己感兴趣的文章,也可以根据标签关联推荐文章。但是众诚翻译的标签是在推荐文章的时候设置的,而且都是英文的,人工设置难免有不规范和不完善的地方。虽然文章发布后可以手动编辑,但我们不能指望用户或管理员一直编辑合适的标签,所以我们需要工具来自动生成标签。在目前开源的分词工具中,jieba是一款功能强大、性能优越的分词组件。幸运的是,它有一个节点版本。nodejieba的安装和使用非常简单:npminstallnodejiebavarnodejieba=require("nodejieba");varresult=nodejieba.cut("帝国主义要瓜分我们的红薯");console.log(result);//['帝国主义','to','put','us','of','land','divide','drop']result=nodejieba.cut('土地,我孙子的金箍棒在哪里?');console.log(结果);//['土地',',','我','老','太阳','的','金箍棒','在','哪里','?']result=nodejieba.cut('大圣,你的金箍棒很适合你的头型!');console.log(result);//['大圣',',','你','of','金箍棒','就','棒','在','特别','与','你','的','头型','!']我们可以加载自己的字典,设置字典中每个单词的权重和词性:编辑user.uft8sweetpotato9999ngoldenhoop9999nstickat9999然后通过nodejieba.load加载字典。varnodejieba=require("nodejieba");nodejieba.load({userDict:'./user.utf8',});varresult=nodejieba.cut("帝国主义要瓜分我们的红薯");console.log(result);//['帝国主义','想要','放','我们的','的','红薯','分的','滴']result=nodejieba.cut('土地,我老在哪是太阳的金箍棒?');console.log(result);//['土地',',','我','老','太阳','的','金箍棒','哪里','?']result=nodejieba.cut('大圣,你的金箍棒很适合你的头型!');console.log(result);//['大圣',',','你','的','金箍棒','太棒了','特别','配','你','的','头型','!']除了分词,我们还可以使用nodejieba提取关键词:constcontent=`HTTP、HTTP/2和性能优化本文的目的是通过对比告诉你为什么要从HTTP迁移到HTTPS,为什么要应该将其添加到HTTP/2支持中。在比较HTTP和HTTP/2之前,我们先了解一下HTTP是什么。什么是HTTPHTTP是一组在万维网上进行通信的规则。HTTP是运行在TCP/IP层之上的应用层协议。当用户通过浏览器请求网页时,HTTP负责处理请求并在Web服务器和客户端之间建立连接。使用HTTP/2,可以在不使用Sprite、压缩或拼接的情况下提高性能。但是,这并不意味着不应使用这些技术。但这已经清楚地表明我们需要从HTTP/1.1迁移到HTTP/2。`;constnodejieba=require("nodejieba");constresult=nodejieba.extract(content,20);console.log(result);输出结果类似如下:[{word:'HTTP',weight:140.8704516850025},{word:'request',weight:14.23018001394},{word:'should',weight:14.052171126120001},{word:'WorldWideWeb',weight:12.2912397395},{word:'TCP',weight:11.739204307083542},{word:'1.1',weight:11.739204307083542},{word:'Web',weight:11.739204307083542},{word:'Sprite',weight:11.739204307083542},{word:'HTTPS',weight:11.739204307083542},{word:'IP',weight:11.739204307083542},{word:'应用层',weight:11.2616203224},{word:'client',weight:11.1926274509},{word:'browser',weight:10.8561552143},{word:'拼接',weight:9.85762638414},{word:'comparison',weight:9.5435285574},{word:'webpage',weight:9.53122979951},{word:'server',weight:9.41204128224},{word:'使用',weight:9.03259988558},{word:'Necessity',weight:8.81927328699},{word:'Add',weight:8.0484751722}]我们在字典中添加了一些新关键字:PerformanceHTTP/2输出结果如下:[{word:'HTTP',weight:105.65283876375187},{word:'HTTP/2',weight:58.69602153541771},{word:'request',weight:14.23018001394},{word:'should',weight:14.052171126120001},{word:'performance',weight:12.61259281884},{word:'WorldWideWeb',weight:12.2912397395},{word:'IP',重量:11.739204307083542},{word:'HTTPS',重量:11.739204307083542},{word:'1.1',重量:11.739204307083542},{word:'TCP',重量:11.739204307083542},{word:'Web',重量:204.3,{word:'Sprite',weight:11.739204307083542},{word:'ApplicationLayer',weight:11.2616203224},{word:'Client',weight:11.1926274509},{word:'Browser',weight:10.8561552143},{word:'stitching',weight:9.85762638414},{word:'comparison',weight:9.5435285574},{word:'webpage',weight:9.53122979951},{word:'server',weight:9.41204128224},{word:'use',weight:9.03259988558}]在此基础上,我们使用白名单过滤掉一些可以作为标签的词:constcontent=`HTTP、HTTP/2和性能优化本文的目的是比较在比较HTTP和HTTP/2,让我们看看什么是HTTP。什么是HTTPHTTP是一组在万维网上进行通信的规则。HTTP是运行在TCP/IP层之上的应用层协议。当用户通过浏览器请求网页时,HTTP负责处理请求并在Web服务器和客户端之间建立连接。使用HTTP/2,可以在不使用Sprite、压缩或拼接的情况下提高性能。但是,这并不意味着不应使用这些技术。但这已经清楚地表明我们需要从HTTP/1.1迁移到HTTP/2。`;constnodejieba=require("nodejieba");nodejieba.load({userDict:'./user.utf8',});constresult=nodejieba.extract(content,20);consttagList=['HTTPS','HTTP','HTTP/2','网络','浏览器','性能'];console.log(result.filter(item=>tagList.indexOf(item.word)>=0));***获取:[{word:'HTTP',weight:105.65283876375187},{word:'HTTP/2',weight:58.69602153541771},{word:'performance',weight:12.61259281884},{word:'HTTPS',weight:11.739204307083542},{word:'Web',weight:11.739204307083542},{word:'browser',weight:10.8561552143}]这就是我们想要的结果。以上就是词库nodejieba的基本使用方法。未来我们可以利用它对众诚翻译发布的译文进行自动分析并添加相应的标签,为译者和读者提供更好的用户体验。