jieba分詞最細粒度分詞的代碼修改

jieba分詞最細粒度分詞的代碼修改

最近在做文本的近似識別,採用的是python 的結巴分詞插件進行分詞,我想要分成非常細的粒度,但是一定要成詞。例如「中華人民共和國」我希望分成的是 中華 人民 共和國 這種形式。但是jieba默認的分詞方式直接分成了 中華人民共和國 ,因為這個詞的詞頻較高,所以不分詞,網上有人說降低一下長詞的詞頻,這是個辦法,但是對於某些詞還是不行。這裡我找到了一個修改jieba模塊代碼的方法來設置jieba分詞最小粒度分詞長度。

首先在jieba包的文件夾中找到__init__.py路徑是D:workfulltextsearchvenvLibsite-packagesjieba。然後找到下面代碼中的 get_DAG函數,將while i < N and frag in self.FREQ:注釋掉, 將while i < N and i<k+3 and frag in self.FREQ:放上,這裡的k+num中的num就是成詞的最大長度,我這裡設置為3了,所以成詞最多能成一個三個字的詞。當然也可以設置其他的數,根據實際需要來設置,切記設置完成後以後再想分詞一定要修改回來。

def get_DAG(self, sentence): self.check_initialized() DAG = {} N = len(sentence) for k in xrange(N): tmplist = [] i = k frag = sentence[k] # while i < N and frag in self.FREQ: while i < N and i<k+3 and frag in self.FREQ: if self.FREQ[frag]: tmplist.append(i) i += 1 frag = sentence[k:i + 1] if not tmplist: tmplist.append(k) DAG[k] = tmplist return DAG

推薦閱讀:

參考場景:文本情緒的分析
測試lucene的所有分詞介面

TAG:分詞 | 中文分詞 | Python |