finalseg

【NLP】【二】jieba源码分析之分词

二次信任 提交于 2019-12-05 10:01:38
【一】词典加载 利用jieba进行分词时,jieba会自动加载词典,这里jieba使用python中的字典数据结构进行字典数据的存储,其中key为word,value为frequency即词频。 1. jieba中的词典如下: jieba/dict.txt X光 3 n X光线 3 n X射线 3 n γ射线 3 n T恤衫 3 n T型台 3 n 该词典每行一个词,每行数据分别为:词 词频 词性 2. 词典的加载 jieba/_init_.py,源码解析如下: # 加载词典 def gen_pfdict(self, f): # 定义字典,key = word, value = freq lfreq = {} # 记录词条总数 ltotal = 0 f_name = resolve_filename(f) for lineno, line in enumerate(f, 1): try: line = line.strip().decode('utf-8') # 取一行的词语词频 word, freq = line.split(' ')[:2] freq = int(freq) # 记录词频与词的关系,这里直接采用dict存储,没有采用Trie树结构 lfreq[word] = freq ltotal += freq # 对多个字组成的词进行查询 for ch in xrange