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


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
杉氧4 分钟前
打破边界(二):在 React Native 中嵌入原生 UI 组件 (Native UI Components)
android·前端·react native
古法安卓40 分钟前
Android-切换白天黑夜内存不足问题排查
android·java·android studio
聚美智数43 分钟前
快递拦截-物流在途拦截-在途拦截API接口介绍
android
flower_drop1 小时前
从 QtScrcpy 到 TabQA:如何在浏览器侧边栏搞定 Android 投屏与测试提单?
android
脚踏实地,坚持不懈!2 小时前
Android 系统工程师(性能/功耗/稳定性)岗位问题深度解析:从内核源码到实战排查(完善版)
android·linux·运维·服务器
Kapaseker3 小时前
适配小米“中”折屏,非得买一台吗
android·kotlin
恋猫de小郭3 小时前
Flutter 状态管理基准测评,一个很有趣的观点
android·前端·flutter
可乐鸡翅yeah_3 小时前
App WebView 加载 M3U8 流媒体踩坑,安卓 iOS 混合开发播放异常定位
android·ios·harmonyos·m3u8·m3u8在线播放
木卫四科技3 小时前
从函数劫持到智能体控制平面:Hook 如何从 Linux-Android 演化到 Agent Runtime
android·linux·人工智能·安全
菠萝加点糖3 小时前
Android applicationIdSuffix 详解
android·gitee·kotlin