Android 分词的两种方式

前言:

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

1、安卓原生BreakIterator分词

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

Kotlin 复制代码
    /**
     *  功能:原生分词
     *  参数: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: Int
        val arrayListOf = arrayListOf<String>()
        while (start != BreakIterator.DONE) {
            end = boundary.next()
            if (end <= start) continue
            val 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-androidhttps://github.com/452896915/jieba-android 需要这些文件:

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

使用:

1、提前初始化JiebaSegmenter

Kotlin 复制代码
        JiebaSegmenter.init(applicationContext)

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

Kotlin 复制代码
                    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_linkhttps://blog.csdn.net/qq_39731011/category_7565212.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=7565212&sharerefer=PC&sharesource=qq_39731011&sharefrom=from_link


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
你听得到111 小时前
排查 App 问题:别只盯着报错,把前后发生的事情串起来
android·前端·flutter
淡淡的香烟2 小时前
Android智能猫砂盆视频加载慢卡顿问题分析
android·服务器·音视频
Xxtaoaooo2 小时前
从故障诊断到寿命预测:用 DolphinDB 构建工业设备的预测性维护管线
android·故障诊断·dolphindb·工业设备·寿命预测
天空之城--2 小时前
近一周Android Flutter行业动态与实用参考
android·flutter
Everbrilliant892 小时前
Android FFmpeg 实战:从基础到播放器的完整技术解析
android·ffmpeg·ffmepg实战·音视频同步实现·ffmpegpractices·ffmpegpractice·opengl 视频渲染
alexhilton14 小时前
Android XR 开发入门完全指南
android·kotlin·android jetpack
2501_9159090618 小时前
全面解析iOS应用上架到App Store的完整流程与关键注意事项
android·macos·ios·小程序·uni-app·cocoa·iphone
淡淡的香烟20 小时前
AndroidAI使用心得
android
chjif21 小时前
Android 设备管控开发实战:无障碍如何准确识别当前前台 App?
android
chjif21 小时前
Android 设备管控开发实战:企业受控终端的 DNS 域名策略实现
android·华为·harmonyos