好久沒寫點什麼了:(
鑑於目前很多分詞元件不開源,本人決定自行編寫中文分詞元件。
以下為 ----klion 原創
首先貼個專案設計概要:
從沒有接觸過中文分詞,以前覺得很高深(可能的確很高深),自己只會漢語說話、寫點小文章,沒有研究過漢語 現在要用了,前天開始,初步研究了下,設想如下。
我一直喜歡簡潔,下面的話就用問答形式來說明下我的分詞程式設計的要點:
1、 首先,中文詞典的結構如何設計?
詞庫的儲存格式:採用二叉樹結構(最簡單的格式是:根、左子女、右兄弟),每個節點存放乙個字,從根節點開始的每個兄弟節點到該節點的所有左子女節點直到葉節點組成乙個詞。(這句話比較難理解,誰叫我表達能力有限呢)來個圖吧:
看過圖應該是有所理解了吧,(這個是初步設想,自我感覺還有可以改進的地方,以後改進了重寫:p)
每個節點包含如下內容:
1) 字(主角啦)
2) 字權重(咱們取他的實際文章和環境中出現的頻率 ln值,這個決定每個字離根節點的距離)
3) 左子女節點指標(指向葉節點)
4) 右兄弟節點指標(指向兄弟節點)
5) 當前所處的深度(從根節點到當前節點的路徑長度)
6) 查詢出現的次數。
2、 如何自動將更多的詞語加入詞典?
可以利用從web上抓取到的各種文章來進行提取,提取的方法是 和現有的詞庫進行遍歷,將不存在的詞加入詞庫,具體演算法可以參考 lcs演算法。
還有就是在查詢的同時新增新發現的詞(沒有在詞庫里查詢到的詞)也被加入到詞庫里。
3、 如何消除或避免歧義?
正向、反向匹配,看得分高低來決定選用哪種切分結果
4、 如何智慧型處理同義詞?
目前好象沒有偷懶的辦法
5、 如何處理數字、標點、英文本母?
預處理,按照通用方法處理
6、 如何來查詢
1) 全詞優先查詢
2) 分詞切分查詢
7、 如何讓他更智慧型?
和使用者通過輸入法和一些桌面小遊戲來為我們豐富詞庫,目前有的:比如 搜狗、填詞遊戲
中文分詞 中文分詞及其應用
一 中文分詞原理 中文分詞是指將乙個漢字序列切分成乙個乙個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。現有的分詞方法可分為三大類,分別是基於字串匹配的分詞方法 基於理解的分詞方法和基於統計的分詞方法。一 基於字串匹配的分詞方法 基於字串匹配的分詞方法又稱機械分詞方法,它是按...
bilstm crf中文分詞 多標準中文分詞模型
這是復旦19年6月剛發的文章,初略看一遍,記筆記。chinese word segmentation簡稱cws 將多標準學習引入到cws,不同分詞標準語料共享common knowledge,能夠互相提公升 作者提到應該是第一次從頭開始訓練transformer做分詞任務,避免了rnn和cnn的長依...
mysql 中文分詞 MySQL 中文分詞原理
一,首先我們來了解一下其他幾個知識點 1.mysql的索引意義?索引是加快訪問表內容的基本手段,尤其是在涉及多個表的關聯查詢裡。當然,索引可以加快檢索速度,但是它也同時降低了索引列的插入,刪除和更新值的速度。換通俗的話來講 mysql中的索引就是乙個特殊的平衡二叉樹,當在平衡二叉樹中搜尋某一條值的時...