Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合)

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_138css

其实很早之前就想搞一套完备的标签云架构了,迫于没有时间(其实就是懒),一直就没有弄出来完整的代码,说到底标签对于网站来讲仍是很重要的,它可以对一件事物产生标志性描述,一般都会采用相关性很强的关键字,这样不只便于检索和分类,同时对网站的内链体系也是有促进做用的。html

最近疫情的关系一直在家里呆着,闲暇时和一些学生聊天的时候,人家问:你说你一直在写博客,那你到底在写一些什么内容的文章呢?我居然一时语塞,因而搞出来下面这种的标签云,下回被问一样的问题时,就能够展现一下了。前端

和传统的在线博客标签云最大的区别在于,这些标签并非我手动打上去的,由于时间有限,每写一篇文章就本身提取不少关键字出来,还得挨个入库,这件事想一想就很痛苦,因而写脚本自动提取关键字,再综合全部文章的标题得出。vue

这里用到的技术点就是基于python3.7的结巴分词中的提取关键词,首先进行安装python

pip3 install jieba

结巴分词基于TF-IDF关键词提取算法 mysql

TF-IDF是关键词提取最基本、最简单易懂的方法。判断一个词再一篇文章中是否重要,一个最容易想到的衡量指标就是词频,重要的词每每在文章中出现的频率也很是高;但另外一方面,不是出现次数越多的词就必定重要,由于有些词在各类文章中都频繁出现(例如:咱们),那它的重要性确定不如哪些只在某篇文章中频繁出现的词重要性强。从统计学的角度,就是给予那些不常见的词以较大的权重,而减小常见词的权重,最终得分较高的词语即为关键词。nginx

与此同时,结巴分词还能够帮你过滤那些无心义的虚词,相似「的、地、得、着、了、过」这种git

代码以下:github

import jieba.analyse

data = "其实很早之前就想搞一套完备的标签云架构了,迫于没有时间(其实就是懒),一直就没有弄出来完整的代码,说到底标签对于网站来讲仍是很重要的,它可以对一件事物产生标志性描述,一般都会采用相关性很强的关键字,这样不只便于检索和分类,同时对网站的内链体系也是有促进做用的。最近疫情的关系一直在家里呆着,闲暇时和一些学生聊天的时候,人家问:你说你一直在写博客,那你到底在写一些什么内容的文章呢?我居然一时语塞,因而搞出来下面这种的标签云,下回被问一样的问题时,就能够展现一下了。"
for keyword, weight in jieba.analyse.extract\_tags(data, withWeight=True):
    print('%s %s' % (keyword, weight))

默认会直接提取前20个关键词,按照权重倒序:web

标签 0.36316568234921054
一直 0.17986207627776318
网站 0.17220419499
内链 0.15729957240657894
弄出来 0.13730186512105264
语塞 0.13539157551710526
其实 0.13493691317526316
下回 0.1301755850886842
很早之前 0.12859925351223683
关键字 0.1277766172361842
检索 0.1236956313375
闲暇 0.1223093087630263
标志性 0.12002044945868422
迫于 0.11836056412552631
相关性 0.11816706218618422
架构 0.11760306607526315
促进做用 0.11620754539157895
说到底 0.11464857692289475
博客 0.11084492236894737
聊天 0.11041170151776317

看起来仍是至关靠谱。

若是你须要修改关键词数量,能够指定topK参数,输入几个就返回几个

那么只要在文章提交时加入上面的脚本,就能够每一次都自动生成关键词了,固然了,关键词的存储结构设计也是一个难题,有时间会探讨一下。

有了文章和关键词的关联关系,那么就剩下前端的展现,这里推荐一下台湾同胞写的一个控件:https://github.com/timdream/wordcloud2.js

效果仍是很是赞的,该插件做者谦逊的说本身”可能“是最好的标签云插件,不过我我的认为可能这两个字彻底能够去掉了,它就是最好的。

那么wordcloud2.js使用起来也很是简单,导入js文件后,按照官方文档使用便可,这里附上代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demo</title>
</head>
<style>
  #container{
    width: 1000px;
    margin: 100px auto;
    border: 1px solid #ccc;
  }
</style>
<body>
    <h1>通常</h1>
    <div id="container" style="height: 500px;"></div>
    <!-- <h1>无数据</h1>
    <div id="container1" style="height: 400px;"></div> -->
    <script src="./wordcloud2.min.js"></script>
    <script>
            var wordFreqData = \[\['使用', 28, 114\], \['Mac', 17, 107\], \['Python', 15, 1\], \['实现', 13, 121\], \['python3.7', 13, 157\], \['Django2.0', 12, 283\], \['利用',11, 202\], \['阿里', 10, 187\], \['开发', 10, 230\], \['关于', 10, 51\], \['文件', 9, 215\], \['基于', 9, 199\], \['Centos7.6', 9, 455\], \['配置', 9, 141\], \['部署', 8, 323\], \['Docker', 8, 479\], \['系统', 8, 112\], \['vue', 8, 425\], \['异步', 8, 162\], \['服务', 8, 356\], \['安装', 7, 102\], \['nginx', 7, 195\], \['微信', 7, 707\], \['程序', 7, 711\], \['进行', 7, 381\], \['问题', 7, 52\], \['上传', 6, 171\], \['mysql', 6, 86\], \['以及', 6, 446\], \['一个', 6, 14\], \['响应', 5, 54\], \['compose', 5, 685\], \['python3', 5, 414\], \['Django', 5, 219\], \['搭建', 5, 514\], \['性能', 5, 9\], \['功能', 5, 119\], \['环境', 5, 231\], \['OS', 4, 123\], \['遇到', 4, 4\], \['检测', 4, 41\], \['配合', 4, 200\], \['redis', 4, 290\], \['网站', 4, 324\], \['页面', 4, 46\], \['记录', 4, 27\], \['Tornado', 4, 588\], \['测试', 4, 377\], \['接口', 4, 399\], \['操做', 4, 31\], \['js', 4, 207\], \['前端', 4, 432\], \['应用', 4, 78\], \['centos', 4, 100\], \['解决方案', 3, 35\], \['登陆', 3, 361\], \['js2.6', 3, 464\], \['项目', 3, 552\], \['Flask', 3, 252\], \['商城', 3, 341\], \['实时', 3, 342\], \['视频', 3, 471\], \['面试', 3, 626\], \['api', 3, 884\], \['设计', 3, 58\], \['打造', 3, 198\], \['切换', 3, 155\], \['分离', 3, 561\], \['最新', 3, 64\], \['如何', 3, 130\], \['爬虫', 3, 45\], \['结合', 3, 371\], \['框架', 3, 26\], \['本身', 3, 204\], \['支付宝', 3, 397\], \['布局', 3, 70\], \['博客', 3, 186\], \['模式', 3, 529\], \['而且', 3, 190\], \['支付', 3, 401\], \['代码', 3, 15\], \['Go', 2, 192\], \['Linux', 2, 438\], \['Lang', 2, 193\], \['集成', 2, 410\], \['Windows', 2, 439\], \['ffmpeg', 2, 470\],\['全文检索', 2, 727\], \['Redisearch', 2, 728\], \['变量', 2, 39\], \['celery', 2, 315\], \['添加', 2, 343\], \['Centos7', 2, 413\], \['模块', 2, 21\], \['各类', 2, 84\], \['静态', 2, 197\], \['跨域', 2, 284\], \['读写', 2, 558\], \['先后', 2, 700\], \['自定义', 2, 794\], \['存储', 2, 888\],\['Home', 2, 288\], \['服务器', 2, 321\], \['统一', 2, 701\], \['github', 2, 23\], \['Brew', 2, 289\], \['FastDfs', 2, 513\], \['管理', 2, 704\], \['中文', 2, 87\], \['版本', 2, 156\], \['mpvue', 2, 706\], \['方案', 2, 65\], \['属于', 2, 201\], \['文档', 2, 222\], \['Tornado5.1', 2, 158\], \['https', 2, 184\], \['下载', 2, 223\], \['方法', 2, 10\], \['移动', 2, 69\], \['引擎', 2, 92\], \['不要', 2, 113\], \['h5', 2, 329\], \['并发', 2, 374\], \['一下', 2, 28\], \['Selenium', 2, 139\], \['Rabbitmq3.7', 2, 160\], \['插件', 2, 205\], \['经过', 2, 226\], \['Mongodb', 2, 297\], \['删除', 2, 332\], \['新版', 2, 398\], \['excel', 2, 30\], \['美多', 2, 335\], \['集群', 2, 767\], \['用来', 2, 13\], \['适应', 2, 74\], \['总结', 2, 303\], \['压力', 2, 379\], \['播放', 2, 490\], \['上面', 2, 542\], \['可用', 2, 770\], \['技巧', 2, 98\], \['js2.0', 2, 945\], \['Scrapy', 2, 144\], \['过程', 2, 191\], \['http', 2, 209\], \['推送', 2, 339\], \['Supervisor', 2, 497\], \['工具', 1, 16\], \['之子', 1, 53\], \['FLOAT', 1, 79\], \['python2.7', 1, 101\], \['Operation', 1, 145\], \['快捷键', 1, 166\], \['压缩', 1, 211\], \['图形化', 1, 233\], \['中文翻译', 1, 251\], \['password', 1, 276\], \['Score', 1, 307\], \['客服', 1, 340\], \['vscode', 1, 383\], \['2019.04', 1, 406\], \['监控', 1, 499\], \['tree', 1, 599\], \['localStorage', 1, 624\], \['格式', 1, 649\], \['我的', 1, 678\], \['这样', 1, 725\], \['mpvue1.0', 1, 780\], \['双机', 1, 825\], \['浏览器', 1, 857\], \['加上', 1, 881\], \['截说', 1, 919\], \['云云', 1, 950\], \['验证码', 1, 996\], \['检查', 1, 17\], \['显示', 1, 36\], \['坍塌', 1, 80\], \['预装', 1,122\], \['permitted', 1, 146\], \['五年', 1, 169\], \['请求', 1, 212\], \['git', 1, 234\], \['YES', 1, 277\], \['大名鼎鼎', 1, 308\], \['密码', 1,362\], \['中为', 1, 384\], \['各种', 1, 501\], \['master', 1, 555\], \['前缀', 1, 600\], \['弄清楚', 1, 625\], \['电子书', 1, 650\], \['协程', 1, 789\], \['keepalived', 1, 828\], \['从无到有', 1, 858\], \['七牛云', 1, 883\], \['简短', 1, 921\], \['sublime3', 1, 957\], \['百度', 1, 998\], \['MySQLdb', 1, 19\], \['成员', 1, 37\], \['数目', 1, 55\], \['原理', 1, 82\], \['Anaconda', 1, 103\], \['shell', 1, 148\], \['Hugo', 1, 194\], \['效率', 1, 213\], \['界面', 1, 235\], \['手册', 1, 253\], \['进入', 1, 282\], \['制度', 1, 309\], \['记住', 1, 363\], \['误报', 1, 386\], \['Centos6', 1, 412\], \['pip', 1, 440\], \['uwsgi', 1, 506\], \['slave', 1, 556\], \['索引', 1, 601\], \['10g', 1, 654\], \['反向', 1, 696\], \['原生', 1, 792\],\['热备', 1, 829\], \['调试', 1, 859\], \['阐述', 1, 922\], \['win10', 1, 958\], \['模拟', 1, 1001\], \['import', 1, 2\], \['autocommit', 1, 20\],\['元素', 1, 57\], \['居中', 1, 83\], \['东西', 1, 104\], \['10.11', 1, 124\], \['脚本', 1, 149\], \['千万', 1, 173\], \['推荐', 1, 236\], \['虚拟环境', 1, 256\], \['经常使用', 1, 364\], \['专属', 1, 387\], \['缓存', 1, 441\], \['针对', 1, 472\], \['负载', 1, 508\], \['主从', 1, 557\], \['原则', 1, 602\], \['场景', 1, 627\], \['50g', 1, 655\], \['代理', 1, 697\], \['交互', 1, 736\], \['阻塞', 1, 793\], \['上用', 1, 836\], \['谷歌', 1, 860\], \['切分', 1, 886\], \['事务', 1, 923\], \['vue2.0', 1, 960\], \['镜像', 1, 1003\], \['惨案', 1, 3\], \['函数', 1, 40\], \['发现', 1, 105\], \['El', 1, 125\], \['知识', 1, 151\], \['涉及', 1, 174\], \['减小', 1, 216\], \['双撇号', 1, 238\], \['之中', 1, 258\], \['那些', 1, 317\], \['通讯', 1, 344\], \['文本编辑', 1, 366\], \['语法', 1, 388\], \['节约', 1, 442\], \['一些', 1, 475\], \['均衡', 1, 510\], \['联合', 1, 603\], \['完全', 1, 628\],\['1t', 1, 656\], \['高性能', 1, 737\], \['抓包', 1, 837\], \['半小时', 1, 861\], \['拍云', 1, 925\], \['注册码', 1, 961\], \['下载速度', 1, 1004\], \['15', 1, 22\], \['笔记', 1, 59\], \['乱码', 1, 85\], \['Capitan', 1, 126\], \['共存', 1, 154\], \['业务', 1, 175\], \['提升', 1, 218\], \['关键字', 1, 239\], \['SQLAlchemy', 1, 261\], \['主动', 1, 346\], \['KindEditor', 1, 368\], \['提醒', 1, 390\], \['神坑', 1, 415\], \['用以', 1, 444\], \['直播', 1, 478\], \['分布式文件系统', 1, 512\], \['数据库', 1, 559\], \['单元测试', 1, 608\], \['区别', 1, 629\], \['花式', 1, 657\], \['虚假', 1, 743\], \['CSS3', 1, 795\], \['Charles', 1, 838\], \['一款', 1, 862\], \['扫码', 1, 893\], \['cdn', 1, 926\], \['破解', 1, 962\], \['Homebrew',1, 1007\], \['遍历', 1, 6\], \['是否', 1, 42\], \['适配', 1, 62\], \['默认', 1, 109\], \['升级', 1, 128\], \['公司', 1, 177\], \['保留', 1, 240\], \['基础', 1, 264\], \['win', 1, 348\], \['4.1', 1, 369\], \['防止', 1, 391\], \['处理', 1, 416\], \['空间', 1, 445\], \['mock', 1, 609\], \['架构图', 1, 631\], \['读取', 1, 658\], \['真实', 1, 744\], \['暗黑', 1, 796\], \['抓取', 1, 840\], \['扩展', 1, 863\], \['第三方', 1, 896\], \['全网', 1, 927\], \['2020', 1, 971\], \['换成', 1, 1009\], \['字典', 1, 7\], \['py', 1, 24\], \['存在', 1, 44\], \['倒霉', 1, 110\], \['dict', 1, 179\], \['xlwt', 1, 220\], \['对于', 1, 242\], \['优酷', 1, 265\], \['Process', 1, 350\], \['11', 1, 370\], \['2019', 1, 394\], \['kindeditor4.11', 1, 419\], \['rtmp', 1, 481\], \['谈谈', 1, 566\], \['cProfile', 1, 610\], \['搞清楚', 1, 633\], \['Authentication', 1, 664\], \['容器', 1, 749\], \['属性', 1,798\], \['水印', 1, 841\], \['关联', 1, 867\], \['Picture', 1, 898\], \['评测', 1, 928\], \['攻略', 1, 972\], \['国内', 1, 1011\], \['对比', 1, 8\], \['受欢迎', 1, 25\], \['终端', 1, 88\], \['最好', 1, 111\], \['pytest', 1, 133\], \['key', 1, 180\], \['状况', 1, 243\], \['大误', 1, 266\], \['守护', 1, 291\], \['协议', 1, 325\], \['Worker', 1, 351\], \['私钥', 1, 395\], \['解决', 1, 423\], \['3.7', 1, 448\], \['推流', 1, 483\], \['Hbuilder', 1, 524\], \['优化', 1, 567\], \['轻量', 1, 613\], \['绘制', 1, 635\], \['Basic', 1, 665\], \['flex', 1, 754\], \['celery4.1', 1, 804\], \['高清', 1, 842\], \['尝试', 1, 868\], \['画中画', 1, 899\], \['免费', 1, 929\], \['机器人', 1, 974\], \['增长', 1, 1012\], \['转载', 1, 68\], \['查看', 1, 89\], \['setuptools', 1, 134\], \['出现', 1, 244\], \['几年', 1, 267\], \['进程', 1, 293\], \['Uploadify3.0', 1, 328\], \['exited', 1, 352\], \['ApacheBench', 1, 373\], \['公钥', 1, 396\], \['Alipay', 1, 449\], \['Video', 1, 485\], \['app', 1, 525\], \['具体', 1, 570\], \['Hexo', 1, 614\],\['怎样', 1, 636\], \['Auth', 1, 666\], \['弹性', 1, 757\], \['封装', 1, 807\], \['软件', 1, 844\], \['公众', 1, 869\], \['技术', 1, 907\], \['加速', 1, 930\], \['递归', 1, 978\], \['禁止', 1, 47\], \['wget', 1, 135\], \['Celery3.1', 1, 159\], \['解析', 1, 185\], \['方式', 1, 225\], \['弹指一挥间', 1, 245\], \['Access', 1, 270\], \['设置', 1, 294\], \['exitcode', 1, 353\], \['resource', 1, 427\], \['refund', 1, 450\], \['播放器', 1, 486\], \['混合', 1, 528\], \['Siege', 1, 573\], \['高逼格', 1, 615\], \['到底', 1, 637\], \['Oauth2', 1, 667\], \['9012', 1, 715\], \['Sentinel', 1, 765\], \['架构', 1, 808\], \['手机', 1, 846\], \['消息', 1, 874\], \['opencv4.1', 1, 910\], \['长期', 1, 932\], \['层级', 1, 983\], \['装逼', 1, 11\], \['控件', 1, 48\], \['sql', 1, 95\], \['宴席', 1, 246\], \['denied', 1, 271\], \['duplicate', 1, 354\], \['秒杀', 1, 375\], \['绑定', 1, 429\], \['退款', 1, 452\], \['挂载', 1, 487\], \['简易', 1, 617\], \['支撑', 1, 638\], \['jwt', 1, 668\], \['Thrift', 1, 716\], \['哨兵', 1, 766\], \['面试题', 1, 811\], \['体验版', 1, 847\], \['live2d', 1, 875\], \['人脸识别', 1, 911\], \['Apache', 1, 936\], \['组件', 1, 984\], \['利器', 1, 12\], \['选择器', 1, 49\], \['异同', 1, 72\], \['排序', 1, 96\], \['vim', 1, 115\], \['Webdriver', 1, 140\], \['16', 1, 161\], \['grunt', 1, 206\], \['rails', 1, 228\], \['不散', 1, 247\], \['user', 1, 272\], \['经常使用命令', 1, 302\], \['下面', 1, 355\], \['双向', 1, 431\], \['分发', 1, 489\], \['分布式', 1, 538\], \['MindMaster', 1, 593\], \['创建', 1, 618\], \['互转', 1, 641\], \['认证', 1, 669\], \['RPC', 1, 717\], \['Weui', 1, 813\], \['openId', 1, 849\], \['博君', 1, 876\], \['人脸', 1, 912\], \['httpd', 1, 937\], \['无限', 1, 985\], \['checkbox', 1, 50\], \['查询', 1, 97\], \['自动', 1, 118\], \['迁移', 1, 188\], \['感恩', 1, 248\], \['root', 1, 273\], \['websocket', 1, 337\], \['生成', 1, 400\], \['nginx1.16', 1, 456\], \['导图', 1, 594\], \['session', 1, 621\], \['word', 1, 643\], \['进化', 1, 670\], \['拯救', 1, 720\], \['题库', 1, 814\], \['获取', 1, 850\], \['挂件', 1,877\], \['模型', 1, 913\], \['上将', 1, 940\], \['分类', 1, 986\], \['中文字体', 1, 33\], \['rem', 1, 75\], \['报错', 1, 142\], \['队列', 1, 163\],\['css', 1, 208\], \['六年', 1, 249\], \['localhost', 1, 274\], \['等级分', 1, 304\], \['聊天室', 1, 338\], \['Iterm', 1, 359\], \['机制', 1, 434\], \['uwsgi2.0', 1, 457\], \['网络', 1, 492\], \['Jenkins', 1, 545\], \['脑图', 1, 595\], \['cookie', 1, 622\], \['pdf', 1, 644\], \['用户', 1, 671\], \['传统', 1, 722\], \['Motor', 1, 773\], \['正式', 1, 819\], \['不到', 1, 852\], \['一晒', 1, 878\], \['训练', 1, 914\], \['结构', 1, 988\], \['绘图', 1, 34\], \['完成', 1, 120\], \['任务', 1, 164\], \['版本控制', 1, 232\], \['没有', 1, 250\], \['using', 1, 275\], \['Elo', 1, 306\], \['帐号', 1, 360\], \['语法错误', 1, 382\], \['最新版', 1, 403\], \['安装包', 1, 436\], \['18', 1, 458\], \['自动化', 1, 549\], \['思惟', 1, 596\], \['sessionStorage', 1, 623\], \['兼容', 1, 648\], \['Pelican', 1, 673\], \['须要', 1, 724\], \['提升效率', 1, 777\], \['发布', 1, 822\], \['Chrome', 1, 856\], \['动态', 1, 879\], \['特征', 1, 915\], \['七牛', 1, 948\], \['ai', 1, 993\]\];
            var canvas = document.getElementById('container');
            var options = eval({
                    "list": wordFreqData,
                    "gridSize": 9, // 密集程度 数字越小越密集
                    "word":'v3u',
                    //"shape" : "pentagon",
                    drawOutOfBound: false,
                    fontWeight:700,
                    maxRotation: 40 \* Math.PI / 180,
                    minRotation: -40 \* Math.PI / 180,
                    drawMask: false,
                    "weightFactor": 1,
                    "color": 'random-light', // 字体颜色 'random-dark' 或者 'random-light'
                    "backgroundColor": 'black', // 背景颜色
                   "rotateRatio": 1, // 字体倾斜(旋转)几率,1表明老是倾斜(旋转)
                    click: function(item) {
                alert(item\[0\] + ': ' + item\[2\]);
              }
                });
            //生成
            WordCloud(canvas, options);
        </script>
</body>
</html>

原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_138

相关文章
相关标签/搜索