面向搜索的中文分词设计
我開發的中文分詞程序,開源發布?,其實哪個中文分詞的整體架構是比較糟糕的。架構是否優秀決定了很多構思無法實現,思考了比較久,最近準備開發第二版,拋棄以前的架構,重新實現。下面是一些設計和構思。計劃是兩周時間開發完成beta版(如果因為工作關系,也有可能放棄),主要是希望和大家交流下設計思想,我覺得構思很重要,想得實現不了,可以慢慢研究,想不到才是頭大的問題,希望能和大家一起交流下:
新版中文分詞構想(面向搜索):
分解流程:
1,分段,根據基本的分隔符號對文本進行分段,比如,。;!!,; \r\n等分解文本
2,分字符區,即分解成純粹的 中文文本區 ,數字區 ,綜合字符區(包括英文,數字或者其他符號),分割符號區
3,對中文文本區調用中文分詞算法,對數字區區按空格分詞,對綜合字符區調用英文分詞算法,分割符號區保留
4,對初步分解的單字中文進行中文姓名識別。
5,結合前后詞,對單字中文和數字做日期識別分析
6,未登陸詞分析與識別
算法構想:
1,中文分詞算法
? 匹配模式:正向最大化,反向最大化,概率最大化
? 也會考慮參考SharpICTCLAS系統的NShortpath分詞算法(不過目前還沒看懂,遲鈍的很)
?
2,中文姓名識別算法
? 主要根據中文姓,加上初步分解出的單字中文進行分析:基于詞庫分析單字中文作為名的概率。
?
3,日期識別算法
? 將分解出的單字中文結合前后字符,判斷是否為以下格式之一:
? 數字+年+數字+月+數字+日
? 數字+年+數字+月
? 數字+月+數字+日
? 數字+月
? 數字+日
?
4,新詞識別(未登陸詞識別)
? 1,將分解出的單字中文判斷排除常用單詞(StopWords)外,作為單字出現的概率。所以需要一個單字字庫,包括單字出現概率的信息。
? 當然也可以將現有詞庫對詞進行分解成單字概率分布模型庫(具體如何設計還沒考慮好),提出來和大家交流下:
? 單字出現在第一個字符概率 出現在中間的概率 出現在尾部的概率
?
? 2,將上敘分析的新詞進行概率分析,比如在全文中出現超過N次(比如2次,次數越大,作為一個詞的可能性越高),以提高新詞識別的準確度;
? 不過如此大動作的分析,性能估計有很大問題。
?
5,英文分詞算法
? 1,將全部字符處理為半角字符。
? 2,將全部字符處理為小寫字符。
? 3,識別各種英文字符格式,比如電子郵件格式,網址格式等等。(用正則表達式)
? 4,處理英文形式問題:比如將所有英文復數形式轉換成單數形式。將各種簡寫形式處理為同一形式等等(這部分有興趣可以參考dotlucene和snowball.net對英文處理的方式,這個部分我也沒有深入研究過。)
轉載于:https://www.cnblogs.com/kwklover/archive/2007/03/19/679425.html
總結
以上是生活随笔為你收集整理的面向搜索的中文分词设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不能装载通讯模块。驱动程序安装不正确。
- 下一篇: SQL Server 2005与2000