• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            sunrise

            每天不斷學(xué)習(xí),才能不斷提升自己。

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              64 隨筆 :: 0 文章 :: 92 評(píng)論 :: 0 Trackbacks
            終于該好了,該字典樹(shù)能夠?qū)崿F(xiàn)對(duì)于數(shù)據(jù)的模糊匹配。代碼如下:
            #!/usr/bin/env python
            #
            -*- coding: UTF-8 -*-

            class Node:
              def __init__(self):
                self.map = {}
                self.indexnum = 0
                self.endflag = False
              def contain(self,key):
                return self.map.__contains__(key)
              def __getitem__(self,key):
                return self.map[key]
              def __setitem__(self,key,value):
                self.map[key] =value

            class TrieTree:
              def  __init__(self):
                self.subNum = 0
                self.indexNum = 0
                self.subNode = Node()
              def add(self,key,trieTree):
                self.subNum += 1
                self.subNode[key] = trieTree

              def __chinese(self,char):
                char = unicode(char,"utf8")
                buf = []
                for word in char:
                    if word >= u'\u4e00'and word <= u'\u9fa5':
                      buf.append(word.encode('utf-8'))
                    elif word == '\n':
                      #在這里對(duì)索引進(jìn)行標(biāo)記
                      self.indexNum+=1
                return buf

              def search(self,buf):
                buf = self.__chinese(buf)
                current = self
                for i in range(len(buf)):
                  #轉(zhuǎn)化成每個(gè)漢字
                  #print buf[i]
                  if current.subNode.contain(buf[i]):
                    if current.subNode[buf[i]].subNode.endflag == True:
                      return current.subNode.contain(buf[i])
                    else:
                      current = current.subNode[buf[i]]
                  else:
                     #如果沒(méi)有匹配上,直接進(jìn)入下一層
                    continue

              def load(self,filename):
                try:
                  sock = open(filename,'r')
                  buf = sock.read().split('\n')
                  sock.close()
                except IOError:
                  return None

                #讀取每個(gè)詞語(yǔ)
                for i  in range(len(buf)):
                  buftmp = self.__chinese(buf[i])
                  tree = self
                  #讀取每個(gè)漢字
                  current = tree
                  for j in range(len(buftmp)):
                    if current.subNode.contain(buftmp[j]):
                      current = current.subNode[buftmp[j]]
                    else:
                      sub = TrieTree()
                      current.add(buftmp[j],sub)
                      current = sub
                    if j  == len(buftmp) - 1:
                      current.subNode.endflag = True
                      current.subNode.indexnum = self.indexNum

            if __name__=='__main__':
              s = TrieTree()
              s.load('citynames')
              print s.search('我你')
            #  s.printSelf()
            posted on 2012-08-24 10:15 SunRise_at 閱讀(3194) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): 數(shù)據(jù)結(jié)構(gòu)

            評(píng)論

            # re: 字典樹(shù)改進(jìn)版(對(duì)數(shù)據(jù)進(jìn)行模糊匹配) 2012-08-24 12:38 C小加
            學(xué)習(xí)了,頂LZ  回復(fù)  更多評(píng)論
              

            # re: 字典樹(shù)改進(jìn)版(對(duì)數(shù)據(jù)進(jìn)行模糊匹配) 2012-08-28 18:40 izualzhy
            請(qǐng)問(wèn)lz,Clicki在注冊(cè)成功后咋用在cppblog里啊?  回復(fù)  更多評(píng)論
              

            # re: 字典樹(shù)改進(jìn)版(對(duì)數(shù)據(jù)進(jìn)行模糊匹配) 2012-08-29 10:43 SunRise_at
            復(fù)制那個(gè)標(biāo)簽的代碼到一個(gè)地方,你好好看看那個(gè)說(shuō)明,我弄了好久了,忘了 要把代碼粘哪兒了@izualzhy
            @izualzhy
            @izualzhy
            @izualzhy
              回復(fù)  更多評(píng)論
              

            色综合久久88色综合天天| 久久久久亚洲av成人无码电影 | 久久精品国产黑森林| 精品久久久久中文字| 久久无码AV中文出轨人妻| 狠狠色丁香久久综合婷婷| 亚洲精品无码久久不卡| 久久国产精品成人免费| 久久久久亚洲AV成人网人人网站 | 久久久久久国产精品免费免费| 欧洲成人午夜精品无码区久久| 精品一二三区久久aaa片| 97久久综合精品久久久综合| 久久综合精品国产一区二区三区| 国产叼嘿久久精品久久| 久久综合九色综合精品| 亚洲国产精品无码久久| 一本大道久久东京热无码AV| 91精品婷婷国产综合久久| 久久中文骚妇内射| 久久天天躁夜夜躁狠狠| 亚洲美日韩Av中文字幕无码久久久妻妇| 久久精品国产免费一区| 亚洲中文字幕久久精品无码APP| 97精品依人久久久大香线蕉97 | 久久香蕉国产线看观看99| 久久国语露脸国产精品电影| 伊人色综合久久天天人守人婷| 综合人妻久久一区二区精品| 欧美日韩精品久久久免费观看| 欧美亚洲国产精品久久高清| 日本加勒比久久精品| 久久精品国产免费观看三人同眠| 亚洲精品美女久久777777| 2021少妇久久久久久久久久| 综合久久国产九一剧情麻豆| 亚洲欧美伊人久久综合一区二区| 久久99精品国产99久久6男男| 久久99精品久久久久久齐齐| 国产AV影片久久久久久| 99久久婷婷国产一区二区|