当前位置: 首页 > news >正文

Android 分词的两种方式

前言:

        本文分别介绍了原生和三方(Jieba)两种分词方式的使用和注意事项

1、安卓原生BreakIterator分词

        比较简单,但是效果不太行

    /***  功能:原生分词*  参数:text:需要分词的语句*  返回值:return:分词后的语句*  作者:赵星海*/private fun setTextBreakIterator(text: String) :String {val boundary: BreakIterator = BreakIterator.getWordInstance(Locale.CHINA)boundary.setText(text)var start: Int = boundary.first()var end: Intval arrayListOf = arrayListOf<String>()while (start != BreakIterator.DONE) {end = boundary.next()if (end <= start) continueval word: String = text.substring(start, end)arrayListOf.add(word)start = boundary.next()}return arrayListOf.toString()}
        执行结果:

                绿色区域为分词结果

        

        

2、Jieba分词 也叫“结巴”分词

        准备:

               Jieba的依赖是坏的,不能用的,

                网上给出的和github上写的依赖都是不可以使用的,

                所以拷贝其中的核心类是目前最靠谱的方案

                去Github把Jieba项目下载下来,然后把关键类和文件拷贝到自己项目中

https://github.com/452896915/jieba-androidicon-default.png?t=O83Ahttps://github.com/452896915/jieba-android        需要这些文件:

        

        注意:assets下的文件都要拷贝过来,否则会报空指针,即便处理了空指针也无法中文分词

         使用:

                1、提前初始化JiebaSegmenter         

        JiebaSegmenter.init(applicationContext)

                2、切子线程调用getJiebaSegmenterSingleton() ->同步分词方法

                    Thread {val string: String =JiebaSegmenter.getJiebaSegmenterSingleton().getDividedString(text).toString()runOnUiThread {//在主线程将结果stirng 显示出来}}.start()

                3、还有一个异步分词方法这边就不介绍了,直接调用就行了

                      方法名:getDividedStringAsync()

                      所属类:JiebaSegmenter

        执行结果:

        


 更多内容推荐:

https://blog.csdn.net/qq_39731011/category_7565212.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=7565212&sharerefer=PC&sharesource=qq_39731011&sharefrom=from_linkicon-default.png?t=O83Ahttps://blog.csdn.net/qq_39731011/category_7565212.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=7565212&sharerefer=PC&sharesource=qq_39731011&sharefrom=from_link


如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!


http://www.mrgr.cn/news/79145.html

相关文章:

  • 好用的AI/解析网站
  • Juc22_什么是中断、interrupt、isInterrupted、interrupted方法源码解析、如何使用中断标识停止线程
  • Xcode :给模拟器 创建桌面 快捷方式
  • 离线docker安装数据库(无法访问互联网),那么直接使用 docker pull mysql:latest
  • DHCP详解和部署
  • python 3个线程轮流打印A、B、C
  • Unity数据持久化
  • Springboot3整合Redis
  • 工业—使用Flink处理Kafka中的数据_ProduceRecord1
  • 调试android 指纹遇到的坑
  • 右值引用和完美转发【C++11】
  • flask简易版的后端服务创建接口(python)
  • 【时间序列预测】基于Pytorch实现CNN_LSTM算法
  • 典型的调度算法--短作业优先调度算法
  • 写译热点单词
  • STM32 I2C案例2:硬件实现I2C 代码书写
  • 【Linux---10】本地机器 <=> 服务器 文件互传
  • 工业—使用Flink处理Kafka中的数据_ProduceRecord2
  • 【RDMA】RDMA read和write编程实例(verbs API)
  • React第十一节 组件之间通讯之发布订阅模式(自定义发布订阅器)
  • 微信小程序横滑定位元素案例代码
  • 【go】select 语句case的随机性
  • Python矩阵并行计算;CuPy-CUDA 实现显存加速:;在Python中实现显存加速或卸载;CuPy 和 NumPy 区别
  • compose组件库
  • java调用cmdsh命令
  • 流媒体之linux下离线部署FFmpeg 和 SRS