程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> 淺析常用分詞算法的比較與設想

淺析常用分詞算法的比較與設想

編輯:ASP.NET基礎

與基於理解的分詞算法和基於統計的分詞算法相比,基於文本匹配的算法更加通用。基於文本匹配的算法又稱之為“機械分詞算法”,他是它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功,可識別出一個詞。按照掃描方向的不同,文本匹配分詞方法可以分為正向匹配和逆向匹配兩種;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標注過程相結合,又可以分為單純分詞方法和分詞與標注相結合的一體化方法。

  常用的幾種機械分詞方法如下:

  1) 正向最大匹配法(由左到右的方向)

  2) 逆向最大匹配法(由右到左的方向)

  3) 最少切分(使每一句中切出的詞數最小)。

  其他的還有將上述各種方法相互組合形成的分詞算法,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由於漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。本文中著重討論正向最大匹配法和逆向最大匹配法。

  由於機械分詞算法的准確性取決於算法的准確性與詞庫完備性兩個方面。在本文中設想詞庫充分大,包含需要的詞語。

  一般說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現象也較少。統計結果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進一步提高切分的准確率。

  我們先看兩句中文:

  1) 長春市長春節致辭

  2) 長春市長春藥店

  我們假使詞庫中包含如下詞語“長春”,“長春市”,“市長”,“春節”,“致辭”,“春藥”,“藥店”,“春藥店”等。

  用正向最大匹配法得到的結果是:

  長春市/長春/節/致辭(分成4個詞,其中“節”未匹配到,語義錯誤)

  長春市/長春/藥店(分成3個詞,都匹配到,語義正確)

  用逆向最大匹配法得到的結果是:

  長春/市長/春節/致辭(分成4個詞,都匹配到,語義正確)

  長春/市長/春藥店(分成3個詞,都匹配到,語義錯誤)

  從此,我們可以看到正向最大匹配法和逆向最大匹配法的利弊所在:都能夠正確解釋部分中文,同時都有一些無法區分。

  是否可以考慮將這兩種匹配法結合起來,各取所長呢?答案是肯定的。

  首先,我們對同一個詞用正向最大匹配法和逆向最大匹配法分別切詞,再將結果進行比較。如切分“長春市長春節致辭”,因為正向最大匹配法有一個詞語無法匹配,故選擇使用逆向最大匹配法作為結果。

  其次,我們可以引入詞頻的概念,及每一個詞語都會根據其在漢語中出現的概率獲得一個詞頻值。我們對“長春市長春藥店”進行兩種方法的分詞,但是因為逆向最大匹配法得到的“春藥店”的詞頻相比於其他詞語的詞頻要低很多。我們可以認為這種分詞方法得到的結果不通用,取正向最大匹配法得結果。

  當然,還可以將其他的一些方法(如掃描標志法,詞性檢查法等)與這兩種匹配法相結合,以獲得更好更准確的分詞效果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved