pkuseg 和 jieba 分词对比测试,结果出乎意料...

简介: pkuseg 和 jieba 分词对比测试,结果出乎意料...

640.jpg

有做过搜索的朋友知道,分词的好坏直接影响我们最终的搜索结果。

在分词的领域,英文分词要简单很多,因为英文语句中都是通过一个个空格来划分的,而我们的中文博大精深,同样的词在不同的语境中所代表的含义千差万别,有时候必须联系上下文才能知道它准确的表达意思,因此中文分词一直是分词领域的一大挑战。

之前介绍过一款北大新开源的分词器,根据作者的测试结果,这是一个准确率和速度都超过 jieba 等其他分词的分词器。

所以我就想来做个简单的测试!于是我想用《三国演义》来做一个测试,提取其中著名人名出现的频率。

首先搜索下三国中的人物名单,

640.png

得到人名之后,做成一个人名的列表,之前设置成一个以人物名为键,值为 0 的字典。我只取了曹魏和蜀汉的部分人名,代码如下:

wei = ["许褚","荀攸","贾诩","郭嘉","程昱","戏志","刘晔","蒋济","陈群","华歆","钟繇","满宠","董昭","王朗","崔琰","邓艾","杜畿","田畴","王修","杨修","辛毗",
       "杨阜",
       "田豫","王粲","蒯越","张继","于禁","枣祗","曹操","孟德","任峻","陈矫","郗虑","桓玠","丁仪","丁廙","司马朗","韩暨","韦康","邴原","赵俨","娄圭","贾逵",
       "陈琳",
       "司马懿","张辽","徐晃","夏侯惇","夏侯渊","庞德","张郃","李典","乐进","典韦","曹洪","曹仁","曹彰"]
wei_dict = dict.fromkeys(wei, 0)
shu_dict = dict.fromkeys(shu, 0)

接着去网上下载一部三国的电子书,并读取返回

def read_txt():
    with open("三国.txt", encoding="utf-8") as f:
        content = f.read()
    return content

pkuseg  测试结果

pkuseg 的用法很简单,首先实例化 pkuseg 的对象,获取人物名称数量的思路是这样的:循环我们分词后的列表,如果检测到有人物名称字典中的人物名,就将该数据加 1,代码如下:

def extract_pkuseg(content):
    start = time.time()
    seg = pkuseg.pkuseg()
    text = seg.cut(content)
    for name in text:
        if name in wei:
            wei_dict[name] = wei_dict.get(name) + 1
        elif name in shu:
            shu_dict[name] = shu_dict.get(name) + 1
print(f"pkuseg 用时:{time.time() - start}")
print(f"pkuseg 读取人名总数:{sum(wei_dict.values()) + sum(shu_dict.values())}")

执行结果如下:

640.png

pkuseg 测试结果

jieba 测试结果

代码基本差不多,只是分词器的用法有些不同。

def extract_jieba(content):
    start = time.time()
    seg_list = jieba.cut(content)
    for name in seg_list:
        if name in wei:
            wei_dict[name] = wei_dict.get(name) + 1
        elif name in shu:
            shu_dict[name] = shu_dict.get(name) + 1
    print(f"jieba 用时:{time.time() - start}")
    print(f"jieba 读取人名总数:{sum(wei_dict.values()) + sum(shu_dict.values())}")

执行结果如下:

640.png


ieba 测试结果

emmm 测试结果好像好像有点出乎意料,说好的 pkuseg 准确率更高呢???

640.gif

pkuseg 用时将近 jieba 的三倍,而且提取效果也没有 jieba 分词好!于是我就去逼乎搜了一下 pkuseg ,结果是这样的….640.png

640.jpg


总体而言 pkuseg 吹的有点过了,并没有作者说的那么神奇,有点博眼球的成分,也许它更是一款更注重细分领域的分词器!

相关文章
|
监控 安全 自动驾驶
可载客,可远程驾驶,广州的智能网联道路测试可能出乎你的意料
虽然比上海、北京、深圳晚了一些,但广州还是跟上了这一波政策步伐。6 月 4 日,广州市交通委员会发布《广州市关于智能网联汽车道路测试有关工作的指导意见(征求意见稿)》(以下称“《指导意见》”),对智能网联汽车道路测试的申请、审核、执行、管理等问题做出了具体规划,并同时就此向外界开启民意征集,以做出进一步完善。
1123 0
|
22天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
116 7
性能工具之emqtt-bench BenchMark 测试示例
|
1月前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
29 0
|
16天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
4天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
16 0
|
7天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
13 1
|
11天前
|
机器学习/深度学习 人工智能 测试技术
提升软件测试效率与准确性的策略与工具
【5月更文挑战第2天】 在软件开发生命周期中,测试阶段是确保产品质量的关键。然而,传统的测试方法往往耗时且容易出错。本文将探讨一系列现代软件测试策略和工具,旨在提高测试效率和准确性。我们将分析自动化测试框架、持续集成(CI)、测试驱动开发(TDD)以及人工智能(AI)在测试中的应用,并讨论如何结合这些技术和方法来优化测试流程。
|
12天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
13天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
13天前
|
机器学习/深度学习 人工智能 机器人
深入理解自动化测试:框架、工具与实践
【4月更文挑战第30天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键环节。本文将探讨自动化测试的核心框架、常用工具以及实际应用的最佳实践,旨在为软件测试工程师提供深入的理解和有效的策略,以改进其自动化测试流程。我们将分析几种流行的测试自动化框架,包括Selenium、Appium和JUnit,并讨论如何根据项目需求选择适合的工具。此外,文中还将介绍持续集成(CI)环境下的自动化测试策略,以及如何通过测试结果分析和报告来优化测试过程。目标是帮助读者构建更健壮、更高效的自动化测试系统。

热门文章

最新文章