前言:
本文分别介绍了原生和三方(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
执行结果:
更多内容推荐:
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!