原文轉載自「劉悅的技術博客」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