##基础概念
本文在进行文本相似度分析过程分为以下几个部分进行,
文本分词
语料库制作
算法训练
结果预测
分析过程主要用两个包来实现jieba,gensim
jieba:主要实现分词过程
gensim:进行语料库制作和算法训练
##结巴(jieba)分词
在自然语言处理领域中,分词和提取关键词都是对文本处理时通常要进行的步骤。用Python语言对英文文本进行预处理时可选择NLTK库,中文文本预处理可选择jieba库。结巴分词是基于统计的分词方法,它对给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。例如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词方法渐渐成为了主流方法。
###jieba分词的三种模式:
* 精确模式:将句子最精确的分开,适合文本分析
* 全模式:句子中所有可以成词的词语都扫描出来,速度快,不能解决歧义
* 搜索引擎模式:在精确的基础上,对长词再次切分,提高召回
结巴分词的其他特点诸如:支持繁体分词,支持自定义词典,基于Trie树结构实现高效的词图扫描,采用了动态规划查找最大概率路径等特点。
###jieba库中分词函数
1、jieba.cut()方法
参数string:需要接受分词的字符串。
参数cut_all:控制是否采用全模式分词发,参数为True时表示采用全模式。
参数HMM:控制是否使用HMM模型,参数为True时表示使用HMM模型。
2、jieba.cut_for_search()
参数string:需要接受分词的字符串。
参数HMM:控制是否使用HMM模型,参数为True时表示使用HMM模型。
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语。jieba.lcut和jieba.lcut_for_search参数和上面两个方法一致但返回的是一个list。
###python上的分词输出对比
import jieba
string='上海市浦东新区世纪大道100号楼501'
#精准模式
text_cut=jieba.cut(string)
print(" ".join(text_cut))
#全模式
text_cut=jieba.cut(string,cut_all=True)
print(" ".join(text_cut))
#搜索模式
text_cut=jieba.cut_for_search(string)
print(" ".join(text_cut))
三种模式的输出结果:
精准模式:上海市浦东新区 世纪 大道 100 号楼 501
全模式:上海 上海市 上海市浦东新区 海市 浦东 浦东新区 新区 世纪 纪大 大道 100 号 楼 501
搜索引擎模式:上海 海市 浦东 新区 上海市 上海市浦东新区 世纪 大道 100 号楼 501
###jieba分词自定义字典
在使用ji