欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)中文分詞FMM算法實例

 更新時間:2015年07月10日 15:37:59   作者:Sephiroth  
這篇文章主要介紹了python實現(xiàn)中文分詞FMM算法,實例分析了Python基于FMM算法進(jìn)行中文分詞的實現(xiàn)方法,涉及Python針對文件、字符串及正則匹配操作的相關(guān)技巧,需要的朋友可以參考下

本文實例講述了python實現(xiàn)中文分詞FMM算法。分享給大家供大家參考。具體分析如下:

FMM算法的最簡單思想是使用貪心算法向前找n個,如果這n個組成的詞在詞典中出現(xiàn),就ok,如果沒有出現(xiàn),那么找n-1個...然后繼續(xù)下去。假如n個詞在詞典中出現(xiàn),那么從n+1位置繼續(xù)找下去,直到句子結(jié)束。

import re  
def PreProcess(sentence,edcode="utf-8"):  
  sentence = sentence.decode(edcode)  
  sentence=re.sub(u"[。,,!……!《》<>\"'::?\?、\|“”‘';]"," ",sentence)  
  return sentence  
def FMM(sentence,diction,result = [],maxwordLength = 4,edcode="utf-8"):
  i = 0 
  sentence = PreProcess(sentence,edcode)  
  length = len(sentence)  
  while i < length: 
    # find the ascii word  
    tempi=i  
    tok=sentence[i:i+1]  
    while re.search("[0-9A-Za-z\-\+#@_\.]{1}",tok)<>None:  
      i= i+1 
      tok=sentence[i:i+1]  
    if i-tempi>0:  
      result.append(sentence[tempi:i].lower().encode(edcode)) 
    # find chinese word  
    left = len(sentence[i:])  
    if left == 1:  
      """go to 4 step over the FMM""" 
      """should we add the last one? Yes, if not blank""" 
      if sentence[i:] <> " ":  
        result.append(sentence[i:].encode(edcode))  
      return result  
    m = min(left,maxwordLength)  
    for j in xrange(m,0,-1):  
      leftword = sentence[i:j+i].encode(edcode) 
     #  print leftword.decode(edcode)  
      if LookUp(leftword,diction): 
        # find the left word in dictionary 
        # it's the right one  
        i = j+i  
        result.append(leftword)  
        break 
      elif j == 1:  
        """only one word, add into result, if not blank""" 
        if leftword.decode(edcode) <> " ":  
          result.append(leftword)  
        i = i+1 
      else:  
        continue 
  return result  
def LookUp(word,dictionary):  
  if dictionary.has_key(word):  
    return True 
  return False 
def ConvertGBKtoUTF(sentence):  
  return sentence.decode('gbk').encode('utf-8')
dictions = {}  
dictions["ab"] = 1 
dictions["cd"] = 2 
dictions["abc"] = 1 
dictions["ss"] = 1 
dictions[ConvertGBKtoUTF("好的")] = 1 
dictions[ConvertGBKtoUTF("真的")] = 1 
sentence = "asdfa好的是這樣嗎vasdiw呀真的daf dasfiw asid是嗎?" 
s = FMM(ConvertGBKtoUTF(sentence),dictions)  
for i in s:  
  print i.decode("utf-8")
test = open("test.txt","r")  
for line in test:  
  s = FMM(CovertGBKtoUTF(line),dictions)  
  for i in s:  
    print i.decode("utf-8")

運(yùn)行結(jié)果如下:

asdfa
好的




vasdiw

真的
daf
dasfiw
asid


?

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • python處理文本文件實現(xiàn)生成指定格式文件的方法

    python處理文本文件實現(xiàn)生成指定格式文件的方法

    這篇文章主要介紹了python處理文本文件實現(xiàn)生成指定格式文件的方法,有一定的實用價值,需要的朋友可以參考下
    2014-07-07
  • Python實現(xiàn)為Excel中每個單元格計算其在文件中的平均值

    Python實現(xiàn)為Excel中每個單元格計算其在文件中的平均值

    這篇文章主要為大家詳細(xì)介紹了如何基于Python語言實現(xiàn)對大量不同的Excel文件加以跨文件、逐單元格平均值計算,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 使用Cython提升Python性能的方法步驟

    使用Cython提升Python性能的方法步驟

    Cython是Python的一種擴(kuò)展,允許Python代碼調(diào)用C庫,本文主要介紹了使用Cython提升Python的性能的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • python中使用urllib2偽造HTTP報頭的2個方法

    python中使用urllib2偽造HTTP報頭的2個方法

    這篇文章主要介紹了python中使用urllib2偽造HTTP報頭的2個方法,即偽造http頭信息,需要的朋友可以參考下
    2014-07-07
  • python中字符串類型json操作的注意事項

    python中字符串類型json操作的注意事項

    這篇文章主要給大家介紹了python中字符串類型json操作的一些注意事項,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 如何使用Python做個自定義動態(tài)壁紙

    如何使用Python做個自定義動態(tài)壁紙

    這篇文章主要介紹了如何使用Python做個自定義動態(tài)壁紙的相關(guān)資料,需要的朋友可以參考下方法
    2021-08-08
  • python視頻按幀截取圖片工具

    python視頻按幀截取圖片工具

    這篇文章主要為大家詳細(xì)介紹了python視頻按幀截取圖片工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python Scrapy框架第一個入門程序示例

    Python Scrapy框架第一個入門程序示例

    這篇文章主要介紹了Python Scrapy框架第一個入門程序,結(jié)合實例形式分析了Python Scrapy框架項目的搭建、抓取字段設(shè)置、數(shù)據(jù)庫保存等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 詳解一種用django_cache實現(xiàn)分布式鎖的方式

    詳解一種用django_cache實現(xiàn)分布式鎖的方式

    這篇文章主要介紹了詳解一種用django_cache實現(xiàn)分布式鎖的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 基于OpenMV的圖像識別之?dāng)?shù)字識別功能

    基于OpenMV的圖像識別之?dāng)?shù)字識別功能

    OpenMV是一個開源,低成本,功能強(qiáng)大的機(jī)器視覺模塊。以STM32F427CPU為核心,集成了OV7725攝像頭芯片,在小巧的硬件模塊上,用C語言高效地實現(xiàn)了核心機(jī)器視覺算法,提供Python編程接口,對OpenMV的圖像識別之?dāng)?shù)字識別相關(guān)知識感興趣的朋友一起看看吧
    2021-11-11

最新評論