基于Python的词云生成及优化研究
作者:***
来源:《电脑知识与技术》2021年第19期
        摘要:在大数据时代,利用相关技术手段对大数据进行获取与解读就显得十分重要。“词云”技术,由于能够将文本中的“关键词”图像化,正受到人们越来越多人的关注。该文以《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的
建议》全文文本为例,对基于Python的词云文本分析技术进行了优化,以期为快速解读文本内容提供方便。
        关键词:Python;中文分词;词云;优化;十四五规划
        中图分类号:TP311 文献标识码:A
        文章编号:1009-3044(2021)19-0023-06
        Research on Generation and Optimization of Word Cloud Based on Python—Take the Text of the 14th Five-year Plan as an Example
        WANG Yan
        (Hubei University, Wuhan 430062,China)
        Abstract: In the era of big data, it is very important to obtain and interpret big data by using relevant technical means. "Word cloud" technology, due to its ability to visualize the "Keywords" in the text, is attracting more and more attention. This paper ta
kes the full text of Proposal of the Central Committee of the Communist Party of China on Formulating the 14th Five-Year Plan for National Economic and Social Development and the Long-term Goals for the year of 2035 as an example, and optimizes the text analysis technology of word cloud based on python, so as to provide convenience for quick interpretation of the text content.
        Key words: Python; Chinese word segmentation; word cloud; optimization; 14th five-year plan
        1 引言
        “詞云”,是近几年来出现的用于文本挖掘的可视化技术,其将文本中大量的不重要的信息过滤,并对出现频率较高的“关键词”予以字体大小和颜等视觉形式的差异来直观反映词语的重要程度,文字的字体越大,表明其越重要,可以帮助阅读者迅速把握文本的主要内容。简言之,“词云”,是一种将大量文本信息或网络大数据迅速生成帮助阅读者把握文本关键内容的辅助性可视化工具,其生成的词云图中的词语字形、字号、颜以及图片背景可以根据使用者的实际需求进行修改和保存。此外,借助mask、stopwords、scale等参数
的设置,可以对生成的词云图进行优化设计,比如:背景图设计、删减词语、增加轮廓线等等。
        “词云”,由于其能够快速、直观地抓取文本的主要内容,方便人们对文本内容的解读,正受到人们越来越多的关注。然而,由于对“词云”技术的掌握和应用需要掌握一定的编程知识和技巧,导致大众对此“望洋兴叹”。因此,本文写作目的在于帮助一般读者从无到有掌握“词云”文本分析技术。具体而言,即借助《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》文本,尝试对基于Python的词云文本分析技术进行应用和优化。一方面,解读“词云”原理。另一方面,则为一般读者应用“词云”理论和技术进行文本分析和解读提供一般流程。
        2 词云理论
        “词云”(Word Cloud)一词,由美国学者Rich Gordon于2006年提出,又称文字云图(词云图),属于当前文本挖掘可视化主流技术之一。“词云”制作基本思想为:基于单词库(或词典)将整个文本切分成不同单词片段, 同时对同一单词在文本中的出现次数进行统计;而后根据词频大小,将单词按不同字体大小和颜通过图像呈现出来;词频越高,单词的
呈现方式越凸显。基于中文的“词云”制作基本原理如图1所示。从图1可知,信息收集工作是词云制作的出发点,研究者可根据具体需要选择文本。文本预处理一般可以将输入文本存为txt或Word文档类型,将输出文本以表格或图形方式存储和呈现。中文分词、单词库(或词典)以及关键词提取是词云图制作核心。
        2.1中文分词
        分词是自然语言处理(NLP)中文本处理的前提和基础步骤,由于词是语句中的基本单位,故需要在分析语句前将文本中的连贯的句子切分成不连续的词。相比于英文,中文语句由于句式结构复杂、没有间隔符,一个词语在不同的语句或文本中意义千差万别,地名、人名、省略语以及网络词、流行词、俗语等不确定性词汇的存在等特点加大了分词的难度。中文分词技术面临的困难主要表现在:对词的界定、歧义消除以及未登录词识别三个方面。目前,中文分词有基于词典、基于统计和基于理解三种算法。
        Jieba库是一种应用广泛且效果较为理想的中文分词工具,需要通过pip指令安装,主要支持三种分词模式——精确模式、全模式和搜索引擎模式。
        1精确分词模式:默认模式,对语句进行精确切分,适合文本分析,无冗余,常用格式:Jieba.cut(sentence, cut_all=False)
        2全模式:切分语句中所有可能的词,速度快但是不能解决歧义问题,有冗余,常用格式:jieba.cut(sentence, cut_all=True)
        3搜索引擎模式:在精确分词模式的基础上对长词进行再次切分,提高召回率,常用格式:jieba.cut_for_search(sentence)
        2.2 单词库(或词典)
        Jieba自带一个前缀为的词典,共有两万多个词语并标注了词频及词性。trie树结构的词语扫描指的是将统一前缀的两万多个词语储存在一个trie树中,方便使用者能够迅速查,以实现高效的词图扫描并生成句子中所有可能成词的情况所构成的有向无环图(DAG)。字典生成trie树的同时也会统计出每个词出现的频率。在处理分词句子时,根据给定的词典进行词图扫描,生成多种可能的语句进行切分。
        然后采用动态规划查频率最大的路径和基于词频的最大切分组合,由于在汉语中,
句子的核心部分通常放在句尾且主语前可能有大量修饰词,故对句子从右往左计算最大概率,最终得出最大概率路径和词频最多的切分组合。Jieba中的中文词汇是按照BEMS进行标记的,B—Begin,E—end,M—middle,S—single,即开始、结束、中间、单独成词四种状态。
        而对于未登录词,即词典中没有记录的词可采用基于汉字成词能力的HMM模型(Hidden Markov Model 隐马尔科夫模型),运用Viterbi算法进行计算和词性标注。对未登录词进行自定义词典的加载和拓展需要根据实际情况来处理,例如:专业性较强的未登录词具有专有性、独特性,不适用于其他文本,使用者可以自行添加和指定自定义词典,切分jieba中的未登录词。需要注意的是,自定义词典的格式需要跟一样,一个词占一行,每一行由三部分组成——词语、词频和词性,用空格键隔开。
        2.3 关键词提取算法
        中文文本的关键词提取方法是通过对文本分词根据优先级增加权重,主要有两种:
        TF-IDF(Term Frequency-inverse Document Frequency)算法,即词频-逆文本频率
指数,计算简单且准确度和召回率较高,其算法的主要思想是:某个词在特定文本中出现频率较高而在其他文本中出现频率较低则认定该词汇为该文本的代表词汇,因此可对词汇进行分类统计,其计算公式为:Weight(i,j)=TF (i,j)*IDF(i)=TF(i,j)*log(N/n(j)),其中TF(i,j)=n(j)/∑n(k)。
python中文文档        式中,TF(i,j) 是指特征项 t(j) 在文档中出现的次数占文档中所有词的总和的比例;IDF(i) 则用于衡量词的普遍性,即逆文本频率,其中N表示語料库的文档总数,n(j) 指有特征项t(j)的文档数。
        传统的TF-IDF算法需要对每个词语进行统计而且可能将低频词错选为关键词,导致算法效率和准确率受到影响。罗燕、赵书良等人提出一种可应用于长文本(文本长度大于3106)基于词频统计的TF-IDF算法。研究者根据导齐普夫定律推导出文本中同频次数的计算公式并确定各频次词语所占比重,发现文本中低频词占比较大,然后将其发现的统计规律应用到关键词提取中。研究者通过中英文文本仿真实验得出基于词频统计的TF-IDF算法在平均查准率、平均查全率平均运行时间等方面性能均有所提高。