一種基於樹形詞庫的中文分詞方法
2023-07-31 15:45:11 3
專利名稱:一種基於樹形詞庫的中文分詞方法
技術領域:
本發明涉及搜尋引擎,資料庫,中文分詞領域,特別是涉及一種基於樹形詞庫的中文分 詞方法。
背景技術:
中文分詞技術發展到今天已經有許多不同的處理技術。這些技術概括起來可以歸為三類 有基於匹配的分詞、基於統計的分詞和基於理解的分詞。
在中文分詞領域裡, 一般的分詞系統都是單純地運用了基於匹配的分詞算法,而一些高 級的或有特殊要求的就運用了以匹配為主的混合形分詞算法,即在已有字典的基礎上加入對 新詞的統計,從而改善對未登錄詞的識別率, 一般情況下,混合形算法會比單純的匹配算法 的分詞準確率有較大的改善,尤其是對於一些新生的專業詞或網絡語言等,而這往往是用戶 用於搜索的關鍵詞,因此加入統計思想對最終的分詞的實際效果將會有明顯的效果。
考慮到該算法應用項目的特點——中醫藥領域的搜索系統,統計型算法將會對各種專業名 次有更好的識別,而其效果會比通用型的搜尋引擎要更為明顯。另外,考慮到語義相關的擴 展搜索功能需要有一個能轉化為語義網絡的詞典,因此以匹配為主的混合形分詞算法將具有 準確高效的分詞效果與良好的擴展性,更適合本項目利用。
對不同的使用目的和不同領域的査詢而言,單詞的意義和權重會有很大差別,所以針對 不同使用對詞庫做部分屏蔽或重新加載可以進一步提高分詞的準確性。在樹形結構的分詞表 中,越接近根的節點其涵蓋的語義越廣,因此可以通過標記不同深度的節點來控制要屏蔽的 語義的範圍,同樣也可以將某一領域需要的新詞加入到樹形結構中的合適位置,實現對詞庫 語義範圍的修改。從而在原有算法的基礎上提高分詞效率和準確度。
發明內容
本發明的目的在於克服上述技術的缺陷,而提供一種基於樹形詞庫的中文分詞方法,基 於樹形詞庫並支持新詞加載和詞語屏蔽的中文分詞技術。
本發明的目的是通過以下技術方案來實現的。這種基於樹形結構的中文分詞方法,包括 以下步驟
1)以單個漢字為結點,以具體的分詞作為結構信息來建立樹形中文分詞表;2) 通過對樹型結構的遍歷實現中文分詞,利用樹形詞庫的結構信息來存儲分詞信息,利 用全分支檢索來實現歧義包容;
3) 通過統計用戶輸入新詞的頻度來動態改變詞庫結構,從而實現新詞的自動識別。 本發明中步驟l)樹形詞庫有一個公共的根節點,每個分詞的首字都掛在根節點之下,第
二個字再掛在首字之下,以此類推,通過結點中的標誌位來判斷是否為終結詞。
本發明中步驟2)中對於要進行分詞的字符串,將其與分詞樹進行匹配,到遇到一個終結
符時就表示匹配到一個分詞,將其加入已匹配到的詞中,接下來在繼續現有匹配的同時,將
下一個字作為新詞的首字重新進行匹配,以此來實現分支包容。
本發明中步驟3)中將無法識別的詞和其出現頻次儲存在一個單獨的表中,當其出現頻度
超過系統設定的閥值時,就將該詞在詞庫中遍歷,將缺少的部分插入詞庫中,並將其最後一
個字中的終結符置為"true"。
本發明中通過在樹形詞庫節點上加入屏蔽位來實現對詞庫的屏蔽和動態加載,樹型結構 上的所有結點都包含一個布爾變量用來標示該結點是否被屏蔽,系統讀入需要屏蔽分詞,將 其在詞庫中進行匹配,並將匹配項終止結點上的屏蔽位置為"true";當分詞算法運行時,如 果發現匹配項的屏蔽位被置為"true",就忽略當前匹配;當進行詞庫的動態加載時,系統接 受需屏蔽的詞,將其在詞庫中遍歷,如果該項己存在,就將屏蔽位置為"false",反之則將 其插入詞庫。
本發明的有益效果與常用的基於數據表的詞庫相比,樹形詞庫在匹配效率和匹配長度
上有了很大的提高。本發明在已有的樹形分詞詞庫算法進行了擴展,實現了新詞的自動識別
以及分支屏蔽等功能。本技術在兼顧分詞效率和分詞效果的同時,增強了原有算法的靈活性
和擴展性,使其可以更好的適應動態數據環境的要求。
圖1本發明中樹形詞表結構圖; 圖2本發明中分詞屏蔽示意圖。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚,下面結合附圖及具體實施例對本發明作 進一步地詳細描述
本發明是一種基於樹形結構的中文分詞方法,並實現了基於樹形結構的新詞添加和分支 屏蔽功能,主要按以下步驟進行-1. 建立基於樹形結構的分詞詞庫首先,建立一個根節點,再把詞庫中所有的首字都取 出作為根節點的子節點,而第二個字則作為其子節點,以此類推,節點以ArrayedHashM邵 的形式儲存在內存中,父節點與子節點之間的關聯用HashMap中的映射來表示。
詞庫的具體形式見圖l,其中方型結點表示中間詞,是無法組成分詞的,而菱型結點表示 終結詞,是一個完整的分詞的結尾。這樣,就可以在一條分支中包含多個分詞,最左邊高度 為5的分支"中醫研究中"就包含"中醫"與"中醫研究"兩個分詞。
2. 在建立好詞庫後,分詞的匹配時通過對樹形詞庫的遍歷來實現的,分支處理時這裡的 核心內容。該算法在遇到分支時會自動分為兩條執行路徑, 一條按原路匹配,另一路將下個 漢字作為新詞的首字進行重新匹配。這樣就實現了對所有可能分詞的匹配。
例如我們要在圖1的詞庫中查詢"中醫研究",首先,用"中"字在根節點中匹配,找到 匹配入口,然後逐字匹配,當匹配到"醫"時,發現其為終結詞,就將"中醫"加入分詞結 果中。接下來就分為兩路, 一路繼續匹配,最終得到另一個分詞"中醫研究",另一路將"研" 字在根節點匹配,由於詞表中沒有以"研"開頭的分詞,因此該路匹配終止。
3. 新詞的添加當分詞時遇到無法匹配的新詞時(沒有的首字,無法分割的欄位),就 將其內容和出現次數儲存在一個數據表中。當其出現頻度超過預設闊值時,就將其作為一個 新詞加入分詞詞表。
4. 基於樹形結構的分支屏蔽與加載。樹型結構上的所有結點都包含一個布爾變量用來標 示該結點是否被屏蔽。當需要進行分詞屏蔽時,系統讀入要屏蔽的詞,將其在詞庫中遍歷, 將匹配到的項的最後結點上屏蔽位置為"tme"。
需要加入新詞時,系統讀入需加入的詞,將其在詞庫中遍歷,如果該項存在,就將屏蔽 位置為"false",否則就將其插入詞庫。
在進行分詞算法運行時,如果發現匹配項的屏蔽位被置為"true",就忽略當前匹配。從 而與上述過程一起實現了分支屏蔽與加載。
圖2中表示的是圖1的分詞表在被屏蔽了 "中醫研究"和"中草藥"這兩個詞後的結果, 其中圓形的結點表示被屏蔽位已置位。
上述實施例用來解釋說明本發明,而不是對本發明進行限制,在本發明的精神和權利要 求的保護範圍內,對本發明作出的任何修改和改變,都落入本發明的保護範圍。
權利要求
1. 一種基於樹形結構的中文分詞方法,其特徵在於包括以下步驟1)以單個漢字為結點,以具體的分詞作為結構信息來建立樹形中文分詞表;2)通過對樹型結構的遍歷實現中文分詞,利用樹形詞庫的結構信息來存儲分詞信息,利用全分支檢索來實現歧義包容;3)通過統計用戶輸入新詞的頻度來動態改變詞庫結構,從而實現新詞的自動識別。
2. 根據權利要求1所述的基於樹形結構的中文分詞方法,其特徵在於步驟l)樹形詞 庫有一個公共的根節點,每個分詞的首字都掛在根節點之下,第二個字再掛在首字之下,以 此類推,通過結點中的標誌位來判斷是否為終結詞。
3. 根據權利要求1所述的基於樹形結構的中文分詞方法,其特徵在於步驟2)中對於 要進行分詞的字符串,將其與分詞樹進行匹配,到遇到一個終結符時就表示匹配到一個分詞, 將其加入已匹配到的詞中,接下來在繼續現有匹配的同時,將下一個字作為新詞的首字重新 進行匹配,以此來實現分支包容。
4. 根據權利要求1所述的基於樹形結構的中文分詞方法,其特徵在於步驟3)中將無 法識別的詞和其出現頻次儲存在一個單獨的表中,當其出現頻度超過系統設定的閥值時,就 將該詞在詞庫中遍歷,將缺少的部分插入詞庫中,並將其最後一個字中的終結符置為"true"。
5. 根據權利要求1所述的基於樹形結構的中文分詞方法,其特徵在於通過在樹形詞庫節點上加入屏蔽位來實現對詞庫的屏蔽和動態加載,樹型結構上的所有結點都包含一個布 爾變量用來標示該結點是否被屏蔽,系統讀入需要屏蔽分詞,將其在詞庫中進行匹配,並將匹配項終止結點上的屏蔽位置為"true";當分詞算法運行時,如果發現匹配項的屏蔽位被 置為"true",就忽略當前匹配;當進行詞庫的動態加載時,系統接受需屏蔽的詞,將其在 詞庫中遍歷,如果該項已存在,就將屏蔽位置為"false",反之則將其插入詞庫。
全文摘要
本發明涉及一種基於樹形結構的中文分詞方法,包括以下步驟1)以單個漢字為結點,以具體的分詞作為結構信息來建立樹形中文分詞表;2)通過對樹型結構的遍歷實現中文分詞,利用樹形詞庫的結構信息來存儲分詞信息,利用全分支檢索來實現歧義包容;3)通過統計用戶輸入新詞的頻度來動態改變詞庫結構,從而實現新詞的自動識別。本發明的有益效果樹形詞庫在匹配效率和匹配長度上有了很大的提高。本發明在已有的樹形分詞詞庫算法進行了擴展,實現了新詞的自動識別以及分支屏蔽等功能。本技術在兼顧分詞效率和分詞效果的同時,增強了原有算法的靈活性和擴展性,使其可以更好的適應動態數據環境的要求。
文檔編號G06F17/30GK101458694SQ200810121368
公開日2009年6月17日 申請日期2008年10月9日 優先權日2008年10月9日
發明者吳朝暉, 姜曉紅, 張小剛 申請人:浙江大學