注册 登录

清河洛

python中的jieba库(分词)和wordcloud库(词云)

qingheluo2022-08-29清河洛851
jieba分词库 中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分词,我们可以通过jieba库来完成这个过程 安装:pip install jieba 分词原理:利用自带的中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果 jieba分词函数有两个cut()和lcut(),两者的使用方式完全相同,cut()返回一个生成器对象,而lcut()返回生成器对象转换的list jieba分词的三种模式 s = "中华人民共和国万岁" 精确模式:把一段文本精确地切分成若干个词组,这些词组...

jieba分词库

中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组,这种手段叫做分词,我们可以通过jieba库来完成这个过程

安装:pip install jieba

分词原理:利用自带的中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果

jieba分词函数有两个cut()和lcut(),两者的使用方式完全相同,cut()返回一个生成器对象,而lcut()返回生成器对象转换的list

jieba分词的三种模式
    s = "中华人民共和国万岁"
精确模式:把一段文本精确地切分成若干个词组,这些词组经过组合就可以精确地还原为原始文本。其中不存在冗余单词
    jieba.lcut(s)
    ['中华人民共和国', '万岁']
全模式:把一段文本中所有可能的词组都扫描出来,分词后再组合起来会有冗余,不再是原来的文本
    jieba.lcut(s,cut_all=True)
    ['中华', '中华人民', '中华人民共和国', '华人', '人民', '人民共和国', '共和', '共和国', '万岁']
搜索引擎模式:先用精准模式分词,然后再用全模式对比较长的词组再次进行分词,也有冗余
    jieba.lcut_for_search(s)
    ['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '万岁']
添加自定义分词
    jieba.add_word("民共")
        jieba.lcut(s)返回不含"民共",说明jieba是先按照自带词库进行分词,由于不能冗余,所以没有出现
        jieba.lcut(s,cut_all=True)返回含有"民共"
        jieba.lcut_for_search(s)返回含有"民共"
    jieba.add_word("国万")
        仅仅jieba.lcut(s,cut_all=True)返回带有"国万"
        因为lcut_for_search函数是先用精准模式分词,然后再用全模式对比较长的词组再次进行分词
添加自定义词典
    jieba.load_userdict(dict_file)读取一个文件,将文件中的所有词作为自定义词组
    每行只可写三项参数,分别为词语、词频(可省略)、词性(可省略)空格隔开,顺序不可颠倒
删除词组:jieba.del_word(cizu)

返回分词和分词权重
需要先引入import jieba.analyse
jieba.analyse.extract_tags(txt, topK=20, withWeight=False,allowPOS=())
    txt:        待分词的文本
    topK:       返回前几个权重最大的关键词,默认为20
    withWeight: 是否一并返回关键词权重值,默认为False
    allowPOS:   一个元组,表示仅包括指定词性的词,默认为空,即不筛选
    该方法的分词模式为精确模式

wordcloud词云库

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨

WordCloud 是一款python环境下的词云图工具包,同时支持python2和python3,能通过代码的形式把关键词数据转换成直观且有趣的图文模式

安装:pip install wordcloud

wordcloud库把词云作为一个WordCloud对象来操作,wordcloud.WordCloud()代表一个文本对应的词云对象

创建WordCloud对象:

w = wordcloud.WordCloud(font_path=None, margin=20, width=400, height=200, prefer_horizontal=0.9, mask=None, scale=1, color_func=None, max_words=200, min_font_size=4, stopwords=None, random_state=None, background_color='black', max_font_size=None, font_step=1, mode='RGB', relative_scaling='auto', regexp=None, collocations=True, colormap=None, normalize_plurals=True, repeat=False, include_numbers=False, min_word_length=0)
    
    font_path:string,词云图中使用的字体文件,如果含有中文则必须指定,支持OTF或TTF两种格式
    margin:词云图片中每个词组的之间的间隔距离
    width,height:int,词云图的宽和高
    prefer_horizontal:float,制作词云时文字水平放置的比例(最大为1),为0的话所有词都将垂直放置
    mask:词云形状,默认使用矩形,指定的图片中白色部分将不会绘制,用于打开图片的模块有
        imageio模块:imageio.v3.imread(img_file)
        numpy和PIL模块:numpy.array(PIL.Image.open(img_file))
    scale:float,按照指定比例放大画布
    color_func:func,生成新颜色的函数,如果为空则使用self.color_func
        函数可用参数word, font_size, position, orientation,font_path, random_state
        返回一个单词的 PIL 颜色
        如果要为所有单次设置相同的颜色,可以使用color_func=lambda *args, **kwargs: "white"
    max_words:int,要显示的词的最大个数
    min_font_size:int,显示的最小的字体大小,默认为4
    stopwords:string,设置需要屏蔽的词,如果为None则使用内置的STOPWORDS
    random_state:int,为每个单词返回一个PIL颜色
    background_color:string,背景颜色,使用英文单词字符串
    max_font_size:int,显示的最大的字体大小,默认为None,根据画布高度自动调节
    font_step:int,字体步长,大于1会加快运算,但是可能导致结果出现较大的误差
    mode:string,当参数为"RGBA"并且background_color为None时,背景为透明
    relative_scaling:float,词频和字体大小的关联性
        为0时,只考虑排名,排名高的比低的大一定比例
        为1时,出现频率两倍的词大小会提高两倍
    regexp:string,使用正则表达式分隔输入的文本,默认使用r"w[w']+"
    collocations:bool,是否包括两个词的搭配
    colormap:string,给每个单词随机分配颜色,若指定color_func,则忽略该方法
    normalize_plurals:bool,是否将末尾是"s"的单词去掉末尾的"s"然后进行统计
    repeat:bool,bool,是否重复单词和短语直到达到 max_words 或 min_font_size
    include_numbers:bool,是否将数字也作为词组计算
    min_word_length:int,一个单次包含的最小字母数量
WordCloud对象的常用方法
generate(text):根据文本生成词云,该函数有个别名generate_from_text(text)
fit_words(frequencies):根据词频生成词云,传入一个dict,key为词语,val为该词的float格式权重
generate_from_frequencies(frequencies,max_font_size=None):同fit_words(),多了一个形参
recolor():对现有输出重新着色(重新上色会比重新生成整个词云快很多)
to_file(filename):输出到文件
to_array():返回转化后的numpy array
to_image():返回转化后的PIL图片对象
to_svg():返回转化后的svg格式文本内容


网址导航