前言大家好,我是黄伟。上周我们分享了词云图,教大家如何使用Python制作精美的词云图。这次我们来看看分词。从我们之前学过的wordcloud可以知道,它只能对英文进行分词,暂时不支持中文。这正是它的缺点,但是有一个模块恰好弥补了这一点。它就是----jieba,中文名字口吃,是的,你没听错,没看错,就是口吃。一、jieba的使用1、安装jieba不管安装在哪里都是老生常谈的问题。)..下载后我们解压,在文件主目录下按住shift键然后右键选择'在此处打开命令窗口',然后输入命令:pythonsetup.pyinstall进行安装,就可以看到安装好的版本资料:2.jieba的分词模式1.准确模式可以很准确的把结果分出来,没有多余的词。常用函数:lcut(str),cut(str)比如我随便找一段拆分:importjiebaaa=jieba.cut('任性的90后男孩')这样就得到了aa这样的生成器序列,然后我们遍历一下得到最后的结果:如果你不想换行显示,但又想让它显示一行,并且可以看到效果,你可以这样做:显然,我的关键词太很少,所以它的效果不是很明显,下面加上关键词:这样修改之后就清楚多了。2、全模式可以显示所有的结果,即列出一个段落可以拆分和合并的所有可能性。不信可以看看常用的函数:lcut(str,cut_all=True),cut(str,cut_all=True)来看看它的美:可以看到它列出了这段话中所有可能的组合,但有些组合显然不是我们想要的。3、搜索引擎模型精准分离结果,对较长的词进行二次切分。lcut_for_search(str)和cut_for_search(str)的美妙之处在于它可以重新组织full模式的所有可能性。我们来看一下:这样我们就可以看到我们想要的结果,所以这种模式对于搜索引擎的搜索查找功能来说是非常好的。我们也可以使用list的count方法来统计分词中某个词出现的频率:print(ab.count('Wuhan'))#Thisis1通过上面的理解,相信大家都知道两者的区别lcut和cut还是有点奇怪,其实lcut和cut都可以达到中文分词的效果,只不过不同的是lcut返回的是一个列表,而cut返回的是一个生成器。3、jieba的其他应用1)加新词,就是将文本本身存在的词重新组织起来,使其成为一个个体,使之更加生动:可以看出,它现在可以把我设置的两个词连贯起来,这对名称分割很有帮助。有时分词会分出三字甚至多字的名字。这时候,我们就需要添加新词了。当然,如果你加了文中没有的词,是没有效果的。可以看到:这里不能显示这个自定义的。jieba添加新词只会添加文本中的词。如果要添加Forotherwords,我们必须使用字典并添加我们自己的字典。2)添加词典jieba可以添加自带的词典来分词和搜索关键词。这样可以有效缩小搜索范围,使匹配度更高,时间更短。我们可以使用load_userdict函数来读取自定义词典,需要传入一个文件名,格式如下:#文件的一行只能写三个参数,分别是词,词频(可选),词性(可选)空格分隔开,顺序不能颠倒jieba.load_userdict(file)这样就可以读取文件中的所有文本,然后我们让它匹配我们要切分的文本,然后使用三种模式之一,可准确匹配您要查找的内容。可以看到,我们已经成功匹配了文件字典的内容作为结构,这样我们就可以更准确的匹配结果,不加不加,不加不加。3)删除新词,加了肯定会被删除,那么删除新词呢?如果我们对自己添加的新词不满意,可以直接删除,仅此而已。可以看到分词结果已经恢复到原来的形式了,但是由于我只删了一个,另一个还是‘湖北武汉’。4)处理停用词有时候我们在处理大型文章的时候,可能不会用到每一个词,需要过滤掉一些词。这时候我们就需要处理这些词,比如我们比较熟悉的''','哈哈'等等,这些都是可有可无的词,下面我们来学习如何去除它们:如你所见,我们已经成功去掉了不需要的词:'的','了','哈哈',这是什么风骚操作?哦,其实很简单,就是把这些需要舍弃的词加入到列表中,然后我们遍历需要切分的文本,然后进行解释。如果遍历的文本项中的某个单词存在于列表中,我们将其丢弃,然后将其他不包含的文本添加到字符串中,这样得到的字符串就是最终的结果。5)、权重分析很多时候我们需要根据出现的频率来排列关键词。这时候我们就需要进行权重分析。这里有一个函数,非常方便我们分析。可以看到会把字符串中出现频率最高的词按顺序列出来。如果要打印出这些词出现的频率,只需要加一个withWeight参数即可:那么这些参数是什么意思呢?哦,原来topK指的是你要输出多少个词,withWeight指的是输出词的词频。6)调整单个词的词频在分词的过程中,我们可以对某个词进行显示和划分。但是使用HMM新词发现功能时,词频可能无效,需要设置为False。aa=jieba.lcut('再也回不到小时候的美好时光了,哈哈,想想就心酸',HMM=False)#准备调整词频print('/'.join(aa))jieba.suggest_freq(('beautiful','good'),tune=True)#加上tune参数表示可以分aa=jieba.lcut('再也回不去我的美好时光童年,哈哈,想想都觉得难过',HMM=False)print('/'.join(aa))#生成新词频,可以看出它把美和善分开了。7)查看单词在文本中的起止位置有时我们可以使用函数tokenize()来定位,以获取单词的准确位置和分布。8)修改字典路径。如果觉得当前词典不能满足要求,可以重新设置词典。刚才我们介绍了字典的读取、增删改查方法。下面说一下重设字典的方法。就是:jieba.set_dictionary(file),里面还是加了文件名,但是reset之前一定要初始化jieba,否则可能会设置错误,方法如下:importjiebajieba.initialize()#initializejiebajieba.set_dictionary('OSI.txt')#设置字典4.总结jieba是一款分词工具。总的来说,还是比较厉害的。我们可以用它来获取和过滤很多对我们来说比较核心的东西。相当于数据分析的敲门砖,当然只是一块,哈哈哈。
