jieba分词最重要的就是字典,我们一般用jieba的话是用的它通用的字典,这样在特定的环境中无法分成我们想要的效果,我们需要根据我们自己的生产环境自己添加我们的字典,然后下载jieba源码进行更改,里面分词用了TFIDF和Textrank算法来求关键词,如果求关键词时,在idf.txt文件中没有这个词的权重,那么就取我们求的所有关键词权重的平均。
更改字典表代码如下:
areajieba.initialize(dictjieba.area_dict) # 定义jieba默认的字典,这里我们定义了我们特定环境下的字典,如果不定义,则为它原来自己的字典 areajieba.load_userdict(dictjieba.area_user_dict) # 定义用户自己特有的字典, 茂名市 10000 area 'area'为词性 from areajieba.analyse import extract_tags, set_stop_words set_stop_words(dictjieba.area_stop) # 定义用户自定的停用词表
1. 加载字典, 生成trie树,以Linux系统为例,在加载字典的时候会生成一个cache文件,因为在现在的环境中,用了两个jieba分词,一个是地域的,一个是关键词jieba,如果不更改相关配置,会造成文件名相同,无法同时使用。
2. 给定待分词的句子, 使用正则获取连续的 中文字符和英文字符, 切分成 短语列表, 对每个短语使用DAG(查字典)和动态规划,得到最大概率路径, 对DAG中那些没有在字典中查到的字, 组合成一个新的片段短语, 使用HMM模型进行分词, 也就是作者说的识别新词, 即识别字典外的新词。
3. 使用python的yield 语法生成一个词语生成器, 逐词语返回. 当然, 我认为直接返回list, 效果也差不到哪里去。