溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

用python實(shí)現(xiàn)前向分詞最大匹配算法的案例分析

發(fā)布時(shí)間:2020-08-10 11:01:50 來源:億速云 閱讀:318 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)用python實(shí)現(xiàn)前向分詞最大匹配算法的案例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

理論介紹

分詞是自然語言處理的一個(gè)基本工作,中文分詞和英文不同,字詞之間沒有空格。中文分詞是文本挖掘的基礎(chǔ),對(duì)于輸入的一段中文,成功的進(jìn)行中文分詞,可以達(dá)到電腦自動(dòng)識(shí)別語句含義的效果。中文分詞技術(shù)屬于自然語言處理技術(shù)范疇,對(duì)于一句話,人可以通過自己的知識(shí)來明白哪些是詞,哪些不是詞,但如何讓計(jì)算機(jī)也能理解?其處理過程就是分詞算法。

可以將中文分詞方法簡單歸納為:

1.基于詞表的分詞方法
2.基于統(tǒng)計(jì)的分詞方法
3.基于序列標(biāo)記的分詞方法

其中,基于詞表的分詞方法最為簡單,根據(jù)起始匹配位置不同可以分為:

1.前向最大匹配算法
2.后向最大匹配算法
3.雙向最大匹配算法

三種方法思想都很簡單,今天就用python實(shí)現(xiàn)前向最大匹配算法。

word分詞是一個(gè)Java實(shí)現(xiàn)的分布式的中文分詞組件,提供了多種基于詞典的分詞算法,并利用ngram模型來消除歧義。能準(zhǔn)確識(shí)別英文、數(shù)字,以及日期、時(shí)間等數(shù)量詞,能識(shí)別人名、地名、組織機(jī)構(gòu)名等未登錄詞。能通過自定義配置文件來改變組件行為,能自定義用戶詞庫、自動(dòng)檢測(cè)詞庫變化、支持大規(guī)模分布式環(huán)境,能靈活指定多種分詞算法,能使用refine功能靈活控制分詞結(jié)果,還能使用詞性標(biāo)注、同義標(biāo)注、反義標(biāo)注、拼音標(biāo)注等功能。同時(shí)還無縫和Lucene、Solr、ElasticSearch、Luke集成。

前向最大匹配算法

前向最大匹配算法,顧名思義,就是從待分詞句子的左邊向右邊搜索,尋找詞的最大匹配。我們需要規(guī)定一個(gè)詞的最大長度,每次掃描的時(shí)候?qū)ふ耶?dāng)前開始的這個(gè)長度的詞來和字典中的詞匹配,如果沒有找到,就縮短長度繼續(xù)尋找,直到找到字典中的詞或者成為單字。

具體代碼實(shí)現(xiàn)

獲取分詞函數(shù):getSeg(text)

def getSeg(text):
  # 句子為空
  if not text:
    return ''

  # 句子成為一個(gè)詞
  if len(text) == 1:
    return text

  # 此處寫了一個(gè)遞歸方法
  if text in word_dict:
    return text
  else:
    small = len(text) - 1
    text = text[0:small]
    return getSeg(text)

主函數(shù):main()

def main():
  global test_str, word_dict
  test_str = test_str.strip()
  # 正向最大匹配分詞測(cè)試 最大長度5
  max_len = max(len(word) for word in word_dict)
  result_str = [] # 保存分詞結(jié)果
  result_len = 0
  print('input :', test_str)
  while test_str:
    tmp_str = test_str[0:max_len]
    seg_str = getSeg(tmp_str)
    seg_len = len(seg_str)
    result_len = result_len + seg_len

    if seg_str.strip():
      result_str.append(seg_str)
    test_str = test_str[seg_len:]

  print('output :', result_str)

字典:

word_dict = ['混沌', 'Logistic', '算法', '圖片', '加密', '利用', '還原', 'Lena', '驗(yàn)證', 'Baboon', '效果']

測(cè)試句子:

test_str = '''一種基于混沌Logistic加密算法的圖片加密與還原的方法,并利用Lena圖和Baboon圖來驗(yàn)證這種加密算法的加密效果。'''

分詞結(jié)果

用python實(shí)現(xiàn)前向分詞最大匹配算法的案例分析

關(guān)于用python實(shí)現(xiàn)前向分詞最大匹配算法的案例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI