pkuseg 和 jieba 分词对比测试,结果出乎意料...
点击上方“Python编程与实战”,选择“置顶公众号”
第一时间获取 Python 技术干货!
阅读文本大概需要 5 分钟。
有做过搜索的朋友知道,分词的好坏直接影响我们最终的搜索结果。
在分词的领域,英文分词要简单很多,因为英文语句中都是通过一个个空格来划分的,而我们的中文博大精深,同样的词在不同的语境中所代表的含义千差万别,有时候必须联系上下文才能知道它准确的表达意思,因此中文分词一直是分词领域的一大挑战。
之前介绍过一款北大新开源的分词器,根据作者的测试结果,这是一个准确率和速度都超过 jieba 等其他分词的分词器。
所以我就想来做个简单的测试!于是我想用《三国演义》来做一个测试,提取其中著名人名出现的频率。
首先搜索下三国中的人物名单,
得到人名之后,做成一个人名的列表,之前设置成一个以人物名为键,值为 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) + 1elif name in shu:shu_dict[name] = shu_dict.get(name) + 1print(f"pkuseg 用时:{time.time() - start}")
print(f"pkuseg 读取人名总数:{sum(wei_dict.values()) + sum(shu_dict.values())}")
执行结果如下:
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) + 1elif name in shu:shu_dict[name] = shu_dict.get(name) + 1print(f"jieba 用时:{time.time() - start}")print(f"jieba 读取人名总数:{sum(wei_dict.values()) + sum(shu_dict.values())}")
执行结果如下:
emmm 测试结果好像好像有点出乎意料,说好的 pkuseg 准确率更高呢???
pkuseg 用时将近 jieba 的三倍,而且提取效果也没有 jieba 分词好!于是我就去逼乎搜了一下 pkuseg ,结果是这样的….
总体而言 pkuseg 吹的有点过了,并没有作者说的那么神奇,有点博眼球的成分,也许它更是一款更注重细分领域的分词器!
推荐阅读
一个高性能的web服务是如何搭建的?
一文读懂Python web框架和web服务器之间的关系
Flask 蓝图机制及应用
利用 Flask 动态展示 Pyecharts 图表数据的几种方法
THANKS
- End -
点好看的都变好看了!
pkuseg 和 jieba 分词对比测试,结果出乎意料...相关推荐
- pkuseg,LTP,jieba分词实践
pkuseg pkuseg具有如下几个特点: 多领域分词.不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型.根据待分词文本的领域特点,用户可以自由地选择不同的模型 ...
- 实践:jieba分词和pkuseg分词、去除停用词、加载预训练词向量
一:jieba分词和pkuseg分词 原代码文件 链接:https://pan.baidu.com/s/1J8kmTFk8lec5ubfwBaSnLg 提取码:e4nv 目录: 1:分词介绍: 目标: ...
- 如何在jieba分词中加自定义词典_Python实践129-jieba分词和pkuseg分词
jieba分词 jieba是非常有名的Python中文分词组件 jieba分词的特点是:支持3种分词模式:精确模式.全模式.搜索引擎模式.支持繁体分词.支持自定义词典. 安装: pip install ...
- jieba分词流程及部分源码解读(一)
首先我们来看一下jieba分词的流程图: 结巴中文分词简介 1)支持三种分词模式: 精确模式:将句子最精确的分开,适合文本分析 全模式:句子中所有可以成词的词语都扫描出来,速度快,不能解决歧义 搜索引 ...
- 自然语言处理课程(二):Jieba分词的原理及实例操作
上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论.接下来,我们将要了解一些具体的.可操作的技术方法. 作为小说爱好者的你,是否有设想过通过一些计算机工具 ...
- jieba分词的使用
jieba分词的使用 import jieba tmpstr = '祝福我们伟大的祖国繁荣昌盛!' ret = jieba.cut(tmpstr) # 精确模式 ret # 是一个迭代的generat ...
- 中文分词工具jieba分词器的使用
1.常见的中文分词工具 中科院计算所的NLPIR 哈工大LTP 清华大学THULAC 斯坦福分词器 Hanlp分词器 jieba分词 IKAnalyzer 2.jieba分词算法主要有以下三种: 1. ...
- jieba分词_从语言模型原理分析如何jieba更细粒度的分词
jieba分词是作中文分词常用的一种工具,之前也记录过源码及原理学习.但有的时候发现分词的结果并不是自己最想要的.比如分词"重庆邮电大学",使用精确模式+HMM分词结果是[&quo ...
- jieba分词_自然语言NLP必备(1),jieba工具 5 行代码对整篇文章分词
自然语言是什么?下面来看看百度百科的介绍: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学.计 ...
- 自然语言处理之jieba分词
在处理英文文本时,由于英文文本天生自带分词效果,可以直接通过词之间的空格来分词(但是有些人名.地名等需要考虑作为一个整体,比如New York).而对于中文还有其他类似形式的语言,我们需要根据来特殊处 ...
最新文章
- iOS的一些常用性能优化,和内存优化的方法
- C#正则实现匹配一块代码段
- 内核同步机制——完成量
- SharedPreferences的使用
- MapReduce框架中map、reduce方法的运行机制
- Android震动vibrator系统开发全过程
- 电脑知识:如何保养自己的电脑,看完你就懂了!
- ANDROID:SHOWASACTION="NEVER"是做什么用的?
- mysql高效索引覆盖索引_MySQL高效索引:覆盖索引
- PHP 修改配置文件后重启命名
- 关于数据属性特性configurable设置为false后的限制
- 不知道不 OK!53 个 Python 经典面试题详解
- 三星+android+u盘模式,三星安卓机,如何开启开发者模式,进行USB调试?
- RoCEv2 无损队列缓存
- Adobe Premiere Pro CC教程笔记
- 仿比心源码,uniApp自适应手机屏幕高度
- 线索树找*p的中序后继且中序遍历 二叉线索树
- 无法通过终端(远程桌面)服务启动MATLAB的解决办法
- vulhub漏洞复现37_Liferay
- 达梦数据库安装学习总结--DCA上篇