热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于百度LAC2.0的词云图生成——各大分词工具实战比较

基于百度LAC2.0的词云图生成——各大分词工具实战比较,Go语言社区,Golang程序员人脉社

1.前言

词法分析是自然语言处理的基本工具,主要包括分词、词性标注和实体识别等功能。目前各类词法分析工具大行其道,有免费开源的,也有商业收费的;有高校研发的,也有企业开发的;有支持Java的,也有支持Python的,甚至还有支持安卓平台的。不久前百度带来了LAC2.0版本,据说做了很多改进,我们通过实战来体验一下(百度打钱!!!)。


2.百度LAC2.0介绍

根据百度官方消息,LAC全称Lexical Analysis of Chinese,是百度NLP(自然语言处理部)研发的一款词法分析工具,可实现中文分词、词性标注、专名识别等功能。

百度方面宣称,LAC在分词、词性、专名识别的整体准确率超过90%,以专名识别为例,其效果要比同类词法分析工具提升10%以上。

目前,百度已经发布了LAC2.0版本,之前的1.0版本我也写过一篇博文加以探讨,彼时的1.0版本还是融合在paddlehub中的一个模型,详见利用百度超大规模预训练模型进行分词 一文。在2.0版本中LAC已经成为了独立模块,可以直接通过pip 安装。

pip install LAC

使用起来也非常方便

from LAC import LAC
lac = LAC()
lac.run("雷帅于2020年6月24日毕业于上海财经大学信息管理与工程学院计算机科学与技术系")

结果如下

[['雷帅', '于', '2020年6月24日', '毕业', '于', '上海财经大学信息管理与工程学院', '计算机科学与技术系'],
['PER', 'p', 'TIME', 'v', 'p', 'ORG', 'nz']]

结合官方给出的对照表进行转换,可以得到如下词性

[['雷帅', '于', '2020年6月24日', '毕业', '于', '上海财经大学信息管理与工程学院', '计算机科学与技术系'],
['人名', '介词', '时间', '普通动词', '介词', '机构名', '其他专名']]

3.与其他分词工具速度对比

在本文中,我们主要选取了结巴分词foolnltkTHULAC三个工具来和百度的LAC2.0进行比较。


工具机构/作者算法/模型
LAC2.0百度BiGRU-CRF
jiebaSun JunyiHMM等
foolnltk郑午BiLSTM
thulacthu不知道呀

需要注意的是,foolnltk对TensorFlow的版本有要求,推荐使用TensorFlow==1.14.0

我大致用自己的电脑各跑几百条数据看下速度,这里我从微博上拿到了700+条,用各个工具进行分词标注词性。懒得多次测试了,可能有偶然性,仅供参考。


工具启动耗时(秒)运行耗时(秒)
LAC2.0511.9
jieba2.7120.4
foolnltk18.345
THULAC5261

可以看到LAC 2.0在处理时的速度非常快(百度打钱啊!),而THULAC的数据比较反常,也可能是我测试的问题(以后可以分析一下这个问题)。实际上THULAC还有fast_cut快速分词功能,但是现实找不到so文件,懒得解决了,能用就行。

在本段落中我们仅比较了不同工具之间的启动速度和处理速度。至于效果,有很多开源的测试集,很容易找到这些工具的测试结果。我就不再啰嗦啦。

然而仅仅看测试结果,而不去实际应用,就会有准确而不具体的问题。为了更直观的比较四种工具的效果,我们以词云图为例,观察通过四种工具对同一文章生成的词云图,比较其分词和标注的效果。


4.生成词云图

生成词云图非常简单,只需要用到第三方工具WordCloud即可,可以通过pip 安装

pip install wordcloud

然后生成词云对象并设置参数

wc = WordCloud(
background_color="white",#背景色
max_words=500,
min_font_size=15,
max_font_size=100,
width=540,
height=384,
font_path="Alibaba-PuHuiTi-Light.ttf"#中文字体
)

需要特别注意的是,如果要生成中文词云图,必须手动指定字体路径(相对)。这里我们选用阿里巴巴普惠体,主要是免费,用得起,良心过得去。

另外还需注意,如果是在某些没有GUI的linux服务器上生成词云图,还需要安装PyQt4,否则会报错。我总以为PyQt4是一个python的包,但其实不是的,而是一个系统工具,通过yum安装即可。

yum install PyQt4

然后就可以生成词云图啦

wc.generate(texts)

这里的texts是一个以空格为分隔符的词表字符串,可以通过分词工具获得。


5.效果展示

这里我们选用的是 2020年政府工作报告来生成词云图。并同时在页面上展示4个工具分词生成的词云图。并支持查看单一词性词云图。
在这里插入图片描述
链接为
fgb2019.top:5001/index
也可以扫描二维码
在这里插入图片描述
通过词云图我们可以直观的看到不同的工具的区别。

对于名词和动词,四款工具分词都很不错,看不出明显的差别,而对于地名和机构名,差异比较明显。LAC2.0和结巴明显能识别出较多机构名,其他两个工具稍稍逊色。地名方面LAC2.0表现也不错。

在这里插入图片描述
地名方面,LAC2.0和THULAC表现较好,而jieba和foolnltk明显出现较多错误(见红框标注)

在这里插入图片描述
而机构方面,foolnltk和THULAC几乎仅能识别出党中央、国务院等机构,LAC2.0和jieba识别出了较多机构,也各有一些错误。但就识别正确的词而言,LAC2.0效果较好,比如LAC2.0能够识别出二十国集团,而jieba认为是“十国集团


6.总结

总的来说,百度的LAC2.0在各方面性能上算得上优秀,尤其是在地名和机构名的识别上。实际上LAC2.0对人名识别也比较准确,本文没有具体测试。

//本文也是受邀撰写,感谢百度方面的邀请,但是!没收钱!!!!!!!

到这里,细心的读者应该已经发现了,我用的端口是5001端口,这说明我很可能用的是Flask框架,同时5000端口被占用。如果这样想,那你可能在第五层,但其实我就是更喜欢5001,5000上什么也没有,所以我也只是在第二层。




推荐阅读
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
author-avatar
lookzana
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有