很久很久以前就說要寫博客了图谷,卻一直拖著沒有動筆票渠,結(jié)果一拖就是好幾年...囧...
不過現(xiàn)在終于決定要開始動手寫了逐哈!
然鵝...我相信光這篇文章就會前前后后斷斷續(xù)續(xù)寫好久_ ......
為什么寫博客
為什么現(xiàn)在下決心要開始好好寫博客了呢?主要是隨著項目和接觸到的技術(shù)越來越多问顷,越來越能體會作為一名程序員及時做筆記和定期寫博客的重要性昂秃。寫博客一來可以做定期的總結(jié)和歸納,二來可以記錄項目和技術(shù)以便日后復習和查詢杜窄,就如同為自己的知識和曾經(jīng)的學習建立索引肠骆。
當然也可以自己寫私人的筆記,但是公開的博客有時候?qū)ψ晕腋斜O(jiān)督作用塞耕,通過交流和討論也能更好的完善一些不足之處蚀腿,寫博客就如同將自己的知識和思路開源嘛,程序猿要懂得擁抱開源啊!
另一方面扫外,自己現(xiàn)在是越來越不喜歡微信莉钙、QQ、微博之類的社交軟件了畏浆,很多想法和思考越來越不愿意記錄在朋友圈里胆胰,所以想通過博客來記錄很多諸如生活、工作等方面的感想刻获,這可能是由于寫博客會更加嚴謹和深入一些,不至于太過于娛樂化瞎嬉。
這篇算是我的第一篇博客蝎毡,同時也是 Answer 系列的第一篇文章,接下來的幾篇文章將對 Answer 系統(tǒng)進行完整的原理和技術(shù)的介紹氧枣。
Answer 項目背景
Answer 系統(tǒng)是我本科階段的畢業(yè)設(shè)計沐兵,當時的畢設(shè)名稱為《基于領(lǐng)域?qū)嶓w的語義搜索引擎設(shè)計與實現(xiàn)》
,當時開題時起名起的不是很準確便监,更準確的應該叫《基于領(lǐng)域本體的語義搜索引擎設(shè)計與實現(xiàn)》
扎谎。
當然接下來的幾篇系列文章不會像論文那樣“難以閱讀”碳想,因為我寫這系列文章的初衷就是通俗易懂的介紹這個系統(tǒng),所以文章也不會糾結(jié)于系統(tǒng)的每個細節(jié)毁靶,而是抽出其中最為重要和核心的部分做介紹胧奔,而且會盡量做到言簡意賅,讓大家有一個初步認識预吆,而如果有人想做進一步的了解龙填,可以閱讀我發(fā)布在 github 上的項目源碼(見文末)。
另外當前這個版本的系統(tǒng)與其說是一款搜索引擎拐叉,不如說是一款自然語言問答系統(tǒng)岩遗,之前的版本有全文搜索和知識問答兩部分。
其中全文搜索部分調(diào)用了必應的搜索 API凤瘦,但是現(xiàn)在必應的那個 API 失效了宿礁,系統(tǒng)目前只有知識問答這一部分。當然如果將知識問答這一部分內(nèi)容整合到傳統(tǒng)的全文搜索引擎中蔬芥,就可以稱之為一款所謂的語義搜索引擎了梆靖,現(xiàn)階段主流搜索引擎也是在全文搜索引擎的基礎(chǔ)上把語義問答的結(jié)果整合到最終結(jié)果上從而實現(xiàn)語義和知識搜索。
Answer 運行效果
當前系統(tǒng)運行的效果如下
-
美人魚的導演是誰坝茎?
美人魚的導演是誰.gif 星爺是什么時候出生的涤姊?
- 周董妻子的丈夫的外祖母的女兒是誰?
Answer 當前版本的說明
因為一直沒有時間進行重構(gòu)嗤放,所以 Answer 當前的版本依然是我一年多以前寫的畢設(shè)版本思喊,基本沒有什么變化。
實際來說次酌,當前版本只能算是“校園水平”的系統(tǒng) Demo恨课,當前架構(gòu)也只適用于少數(shù)據(jù)量,主要用來演示和可行性探索岳服,另外其中應該還會有不少 bug(閱讀源碼請原諒那些當時寫的很粗糙的代碼)剂公。
但是從個人的角度來講,這是自己第一個需要查幾十篇論文以及其他各種資料并設(shè)計實現(xiàn)的系統(tǒng)吊宋。這個過程體會到了很多研發(fā)的樂趣纲辽,當時做這個系統(tǒng)時,查看了很多相關(guān)資料璃搜,了解了很多關(guān)于知識表達和語義分析的很有趣的理論研究拖吼,在那一段時間自己也完全沉浸在這個項目中,在學姓馕牵或公司實習上下班都在不停思考這些問題吊档,并且經(jīng)常會有一些異想天開的想法。從中體會到了很多搞科研的樂趣唾糯。
同時這個系統(tǒng)的開發(fā)過程也是一次高效率的學習過程怠硼,自己從對很多相關(guān)技術(shù)不甚了解到查閱各種資料探索不同技術(shù)實現(xiàn)方案再到設(shè)計架構(gòu)和最終實現(xiàn)鬼贱,在幾個月的時間內(nèi)學到了不少東西,并且完成了系統(tǒng)的 Demo香璃,收獲和成長還是相當大的这难,現(xiàn)在讀研期間以及以后走上工作崗位,估計就比較難有這樣既有強烈研發(fā)興趣又能高效率自我成長的開發(fā)經(jīng)歷了增显。
Answer 重構(gòu)
最后雁佳,我也會找時間對這個系統(tǒng)進行一次重構(gòu),以實現(xiàn)大數(shù)據(jù)量的搜索和問答同云。哪怕做不到對任意非結(jié)構(gòu)化文本的知識庫自動構(gòu)建和語義知識搜索糖权,至少也應該要實現(xiàn)對百度百科或維基百科這種半結(jié)構(gòu)化數(shù)據(jù)的語義知識搜索。
下一篇
IT 相關(guān)技術(shù)的學習很重要的一點就是先知整體再鉆細節(jié)(其他領(lǐng)域我覺得也應該是這樣)炸站,因為知識之間是相互關(guān)聯(lián)的星澳,并不存在一個絕對的線性學習路徑,知識更像是一張圖而不是一條線旱易。
比如閱讀一本書禁偎,在理解當前章節(jié)中的知識時,很多時候不僅僅和之前的章節(jié)知識有關(guān)阀坏,還和之后的章節(jié)知識有關(guān)如暖,甚至還和其他書有關(guān),遇到不理解的細節(jié)很正常忌堂,應該大膽往后看盒至,建立具有廣度的知識體系和了解整體的原理后再回頭看,很多細節(jié)難題就迎刃而解士修。
所以在講解系統(tǒng)的細節(jié)之前枷遂,下一篇會先對 Answer 系統(tǒng)的整體架構(gòu)、所用技術(shù)棋嘲、基本原理做一個基本介紹酒唉,這樣對系統(tǒng)就有了一個大體認識,然后再鉆入細節(jié)就會容易的多沸移。
項目源碼
汪
汪.