關(guān)于python實現(xiàn)知識管理的一些想法
學習python也很久了,無論是基礎(chǔ)python語法、還是flaskweb編程、數(shù)據(jù)血緣關(guān)系、人工智能的知識,以及常用web前端、還有工作中零零散散的一些想法,想來想去還是覺得付諸行動更有意義。
初步的想法先從簡單的入手,基于flask實現(xiàn),先整一個基本的web框架,實現(xiàn)頁面的動態(tài)擴展,上中(左右)下布局,左側(cè)為靜態(tài)的菜單,右側(cè)為待展現(xiàn)的內(nèi)容,在右側(cè)頁面中再實現(xiàn)一個個小功能,這些小功能用來實現(xiàn)與用戶的交互。
后期待完成的事項
1、逐步把通過json、數(shù)據(jù)庫實現(xiàn)菜單的優(yōu)化
2、實現(xiàn)css、js和html的分離
3、實現(xiàn)flask的藍圖、flask的模板化、flask的ORM映射
4、增強前端交互功能,實現(xiàn)分頁
5、不斷追加和完善功能
大致的架構(gòu)是這樣的,后續(xù)。
上半部分是css,下半部分是頁面的主框架,具體如下:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <title>個人知識庫</title>
- <style type="text/css">
- *{margin: 0;padding: 0;height: 100%;}
- .fl { float: left; }
- #main{margin-top: 15px;}
- #main .main-area {width: 100%;height:100%;margin: 0 auto;}
- #main .main-area-content{ width: 100%;height:100%;background: #fff; border: 1px solid #ddd;padding:0 0 15px 0;}
- #main .main-area-content .logobar{width: 99%;height:5%;overflow: hidden;}
- #main .main-area-content .statusbar{width: 99%;height:5%;overflow: hidden;}
- #main .main-area-content .left-menu{width:25%;height:85%;margin: 15px 0 0 0;overflow: hidden;}
- #main .main-area .content-box{width:70%;height:85%;padding-left: 15px; border-left:1px solid #ddd; margin-left:-1px;}
- #main .main-area .list{width:99%;border-right: 1px solid #ddd;min-height: 400px;}
- a:link,a:visited{text-decoration: none;color: #fff;}
- ul,li{list-style: none;}
- .list ul li{background-color:#467ca2; border:solid 1px #316a91; border-bottom:0;height: auto;}
- .list ul li a{padding-left: 10px;color: #fff; font-size:12px; display: block; font-weight:bold; height:36px;line-height: 36px;position: relative;}
- .list ul li .inactive{ background:url(images/off.png) no-repeat 184px center;}
- .list ul li .inactives{background:url(images/on.png) no-repeat 184px center;}
- .list ul li ul{display: none;}
- .list ul li ul li { border-left:0; border-right:0; background-color:#6196bb; border-color:#467ca2;height: 36px;}
- .list ul li ul li ul{display: none;}
- .list ul li ul li a{ padding-left:20px;}
- .last{ background-color:#d6e6f1; border-color:#6196bb; }
- </style>
- </head>
- <body>
- <div id="main">
- <div class="main-area">
- <div class="main-area-content clearfix">
- <div class="logobar">logobar</div>
- <div class="left-menu fl">
- <div class="list">
- <ul class="menu">
- </ul>
- </div>
- </div>
- <div class="content-box fl">
- <div id="main" style="height:99%;">
- <iframe frameborder="no" name="mainFrame" id="mainFrame" scrolling="auto" src="index.html" width="99%" height="99%"> 您的瀏覽器不支持嵌入式框架,或者當前配置為不顯示嵌入式框架。 </iframe>
- </div>
- </div>
- <div class="statusbar">底部</div>
- </div>
- </div>
- </div>
- </body>
- </html>
左側(cè)的菜單代碼如下:
上面部分是菜單的折疊和呈現(xiàn),下面是菜單的一些數(shù)據(jù)
- <script type="text/javascript" src="jquery-3.6.0.js"></script>
- <script type="text/javascript">
- $(document).ready(function() {
- $('.inactive').click(function(){
- var className=$(this).parents('li').parents().attr('class');
- if($(this).siblings('ul').css('display')=='none'){
- if(className=="menu"){
- $(this).parents('li').siblings('li').children('ul').parent('li').children('a').removeClass('inactives');
- $(this).parents('li').siblings('li').children('ul').slideUp(100);
- }
- $(this).addClass('inactives');
- $(this).siblings('ul').slideDown(100).children('li');
- }else {
- $(this).removeClass('inactives');
- $(this).siblings('ul').slideUp(100);
- }
- })
- });
- </script>
- /head>
- <ul class="menu">
- <li><a href="#" class="inactive active">PDF工具</a>
- <ul>
- <li><a href="daohang5.html" target="mainFrame" title="PDF轉(zhuǎn)圖片">PDF轉(zhuǎn)圖片</a></li>
- <li><a href="PDF提取文字.html" target="mainFrame" title="PDF提取文字">PDF提取文字</a></li>
- <li><a href=".html" target="mainFrame" title="">PDF提取表格</a></li>
- </ul>
- </li>
- <li><a href="#" class="inactive">血緣關(guān)系</a>
- <ul>
- <li><a href="圖譜2.html" target="mainFrame" title="">全景展示</a></li>
- <li><a href=".html" target="mainFrame" title="">節(jié)點查詢</a></li>
- </ul>
- </li>
- <li><a href="#" class="inactive">自然語言處理組件</a>
- <ul>
- <li><a href=".html" target="mainFrame" title="">分詞</a></li>
- <li><a href=".html" target="mainFrame" title="">詞性</a></li>
- <li><a href=".html" target="mainFrame" title="">詞云</a></li>
- <li><a href=".html" target="mainFrame" title="">文本相似度比較</a></li>
- <li><a href=".html" target="mainFrame" title="">關(guān)鍵詞提取</a></li>
- <li><a href=".html" target="mainFrame" title="">文本摘要提取</a></li>
- </ul>
- </li>
- <li><a href="#" class="inactive">圖像識別組件</a>
- <ul>
- <li><a href=".html" target="mainFrame" title="">照片背景替換</a></li>
- <li><a href=".html" target="mainFrame" title="">識別目標</a></li>
- <li><a href=".html" target="mainFrame" title="">貓狗識別</a></li>
- </ul>
- </li>
- </ul>
實現(xiàn)完成后,大體上運行結(jié)果如下,至于上面的logobar和statusbar有待慢慢完善。
為什么選知識圖譜呢,這是長期以來一直惦記的事情,元數(shù)據(jù)管理、主數(shù)據(jù)管理、數(shù)據(jù)治理、數(shù)據(jù)應(yīng)用都離不開知識圖譜,前期用過neo4j,比較適合做關(guān)系存儲,一個是閉源,一個是和web集成展現(xiàn)上比較弱;用過networkxx,python用于知識圖譜開發(fā)的模塊,但展現(xiàn)效果上比較弱;想用sigma.js,但文檔太少,d3.js門檻太高;pyecharts之前也用過,交互性比較弱,echarts應(yīng)用比較廣一些,文檔和案例也比較容易。知識圖譜的一個問題是大量數(shù)據(jù)的呈現(xiàn)效果不是很理想,再則一般人很少這么用,通常是找到一個基準,去遍歷其上下游直接或間接節(jié)點形成子樹;還有個問題關(guān)于數(shù)據(jù)血緣關(guān)系的解析,目前python提供的比較成熟的包比較有限,pyparsing勉強可以一用。也需要一點點的把知識串起來。
個人體會,權(quán)當一樂,希望有一天能用上自己的成果。