ICTCLAS代碼學習筆記之CUnknowWord類

未登錄詞識別(CUnknowWord類)
ICTCLAS的未登陸詞識別是基於角色標註的。具體的算法大家可以參照張華平等人03年的文章<Chinese Named Entity Recognition Using Role Model>。算法的基本思想就是,首先定義一些與命名實體類型相關的角色,針對中國人名可能就有“姓“、“兩字名的第一個字”、“兩字名的第二個字”、“名字的前綴”、“名字的後綴”等等,然後通過一個已標註了角色的訓練語料庫進行學習,得到一些顯著的角色串模板,例如“姓“+“兩字名的第一個字”+“兩字名的第二個字”是一個人名等,同時得到每個字爲某種角色的概率。通過上述兩組信息來進行未登陸詞的識別。
CUnknowWord類的成員變量有四個成員變量,其中前三個是私有成員變量。m_roleTag是一個CSpan類的標註器,用於標註角色;m_nPos爲此類的一個詞性標籤,即該類是一個通用的未登陸詞的識別類,如果是用於識別人名m_nPos就是相應的人名對應的詞性標籤,如果用於識別地名,就是地名對應的詞性標籤等。另外m_sUnknowFlags是一個標記數組,記錄着m_nPos對應的類相應的類標籤,例如如果m_nPos爲人名,則m_sUnknowFlags的值就是“未##人”,諸如此類。公有成員變量m_Dict是一個詞典類對象,存儲的爲該類的詞典。
Configure函數就是一個讀配置文件的函數,要注意的就是傳入的第二個參數type確定了該對象要識別的類別,即用於確認m_nPOS和m_sUnknowFlags的值,在這個版本中未登陸詞只處理了人名(中國人名和外國人名)以及地名。
IsGivenName是專門爲人名類寫的,用來判斷傳入的字符串是否爲人名。傳入的第一個被當作姓,
後面的一個字被當作名。通過內置的未登陸詞詞典和角色標註結果的概率得到GivenName的概率和SingleName的概率(均取log),如果前者較小(即概率較大)則返回TRUE。
Recognition函數是這個類的重頭戲,用於識別是否爲給定的未登陸詞類型。首先使用自帶的角色標註器將切分好的詞串進行角色標註,然後根據角色標註的結果,把原始切分中的一些零碎的字串連起來並更新優化詞圖graphOptimum。
CUnknown類總結:
這個類是用來做未登陸詞識別的,但是之前的工作已經都做好了,即從語料庫中訓練得到角色概率,得到了最顯著類型未登陸詞的模板。類型差別的工作也是由自帶的角色標註器相應函數完成的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章