iOS中自带超强中文分词器的实现方法

发布时间 - 2026-01-11 02:06:19    点击率:

说明

在处理文本的时候,第一步往往是将字符串进行分词,得到一个个关键词。苹果从很早就开始支持中文分词了,而且我们几乎人人每天都会用到,回想一下,在使用手机时,长按一段文字,往往会选中按住位置的一个词语,这里就是一个分词的绝佳用例,而iOS自带的分词效果非常棒,大家可以自己平常注意观察一下,基本对中文也有很好的效果。而这个功能也开放了API供开发者调用,我试用了一下,很好用!

效果如下:

实现

其实苹果给出了完整的API,想要全面了解的可以直接看文档:CFStringTokenizer Reference

这里说说简单的一个实现:

 // 要分词的字符串
 NSString *string = @"侠士隐锋,莽夫露刃";

 self.keywords = [[NSMutableArray alloc] init];
 CFStringTokenizerRef ref = CFStringTokenizerCreate(NULL, (__bridge CFStringRef)string, CFRangeMake(0, string.length), kCFStringTokenizerUnitWord, NULL);// 创建分词器
 CFRange range;// 当前分词的位置
 // 获取第一个分词的范围
 CFStringTokenizerAdvanceToNextToken(ref);
 range = CFStringTokenizerGetCurrentTokenRange(ref);

 // 循环遍历获取所有分词并记录到数组中
 NSString *keyWord;
 while (range.length>0) {
  keyWord = [string substringWithRange:NSMakeRange(range.location, range.length)];
  [self.keywords addObject:keyWord];
  CFStringTokenizerAdvanceToNextToken(ref);
  range = CFStringTokenizerGetCurrentTokenRange(ref);
 }

其实逻辑很简单:创建分词器–>一个个地一次获取分词后的每个词的起始位置和长度,从而取出词。

示例里我用列表显示每个分词,比较清楚,列表的实现就不说明了,可以直接看工程代码。

值得一提的是,其分词速度很快,甚至一些网络词汇比如“木有”,一些成语等等都能够识别出,能看出这是分词的什么吗:

示例工程:https://github.com/Cloudox/OXStringTokenizerDemo

本地下载:http://xiazai./201706/yuanma/OXStringTokenizerDemo().rar

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# ios  # 分词  # 中文分词器  # 分词器  # Java实现简易的分词器功能  # docker 部署 Elasticsearch kibana及ik分词器详解  # 如何在docker容器内部安装kibana分词器  # docker 安装solr8.6.2 配置中文分词器的方法  # 安装elasticsearch-analysis-ik中文分词器的步骤讲解  # Solr通过特殊字符分词实现自定义分词器详解  # JAVA StringBuffer类与StringTokenizer类代码解析  # 基于Java中的StringTokenizer类详解(推荐)  # 浅谈分词器Tokenizer  # 关键词  # 可以直接  # 的是  # 这是  # 也有  # 很好  # 本地下载  # 出了  # 第一个  # 机时  # 就不  # 遍历  # 我用  # 很简单  # 这篇文章  # 自带  # 谢谢大家  # 一提  # 说明了  # 往往会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 怎样使用JSON进行数据交换_它有什么限制  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何在IIS中配置站点IP、端口及主机头?  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  北京网站制作的公司有哪些,北京白云观官方网站?  EditPlus中的正则表达式 实战(4)  如何用搬瓦工VPS快速搭建个人网站?  Laravel如何使用Blade模板引擎?(完整语法和示例)  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何在阿里云ECS服务器部署织梦CMS网站?  LinuxCD持续部署教程_自动发布与回滚机制  七夕网站制作视频,七夕大促活动怎么报名?  Swift中switch语句区间和元组模式匹配  做企业网站制作流程,企业网站制作基本流程有哪些?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  黑客入侵网站服务器的常见手法有哪些?  图册素材网站设计制作软件,图册的导出方式有几种?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  微信小程序 闭包写法详细介绍  简历没回改:利用AI润色让你的文字更专业  如何快速搭建自助建站会员专属系统?  简单实现Android文件上传  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  用v-html解决Vue.js渲染中html标签不被解析的问题  详解MySQL数据库的安装与密码配置  Linux后台任务运行方法_nohup与&使用技巧【技巧】  bootstrap日历插件datetimepicker使用方法  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  JavaScript如何实现继承_有哪些常用方法  装修招标网站设计制作流程,装修招标流程?  如何用已有域名快速搭建网站?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  制作旅游网站html,怎样注册旅游网站?  音响网站制作视频教程,隆霸音响官方网站?  Bootstrap CSS布局之列表  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何打造高效商业网站?建站目的决定转化率  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  如何用虚拟主机快速搭建网站?详细步骤解析  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Android仿QQ列表左滑删除操作  如何登录建站主机?访问步骤全解析  Laravel怎么使用artisan命令缓存配置和视图  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践