python有结巴分词,看github的时候发现,也有Java的中文分词项目

github项目地址:ysc/word: Java分布式中文分词组件 - word分词 (github.com)

看介绍支持分布式计算,这里仅单机体验一下,不玩分布式,之后如果用得上再研究吧.

使用maven添加依赖包:
<dependencies>
    <dependency>
        <groupId>org.apdplat</groupId>
        <artifactId>word</artifactId>
        <!--1.3版需要jdk8-->
        <version>1.3</version>
    </dependency>
</dependencies>
Java demo:
package clearwind;
import org.apdplat.word.*;
import org.apdplat.word.segmentation.Word;

import java.util.List;


/**
 * 分词测试
 */
public class Word_Demo_20211203 {
    public static void main(String[] args) {
        //测试文本
        String text = "在森林里,有一只兔子,她很可爱,很听话,很细心。那可爱的小脸上嵌着一双晶莹、漂亮的眼睛。大家都叫她“乖乖”。她的细心可是在森林里出了名的。人人见了,都会夸她。乖乖的妈妈也为自己有着这么一个女儿而自豪、高兴。";
        //分词
        List<Word> words1 = WordSegmenter.segWithStopWords(text);
        List<Word> words2 = WordSegmenter.seg(text);
        //分词结果
        System.out.println("移除停用词:"+words1);
        System.out.println("保留停用词:"+words2);

        //词频统计
        WordFrequencyStatistics wordFrequencyStatistics = new WordFrequencyStatistics();
        //分词
        wordFrequencyStatistics.seg(text);
        //输出
        wordFrequencyStatistics.dump();
    }
}

结果:

移除停用词:[在, 森林, 里, 有, 一只, 兔子, 她, 很, 可爱, 很, 听话, 很, 细心, 那, 可爱, 的, 小, 脸上, 嵌, 着, 一双, 晶莹, 漂亮, 的, 眼睛, 大家, 都, 叫她, 乖乖, 她, 的, 细心, 可是, 在, 森林, 里, 出了名, 的, 人人, 见了, 都会, 夸她, 乖乖, 的, 妈妈, 也, 为, 自己, 有着, 这么, 一个, 女儿, 而, 自豪, 高兴]
    
保留停用词:[森林, 一只, 兔子, 可爱, 听话, 细心, 可爱, 脸上, 嵌, 一双, 晶莹, 漂亮, 眼睛, 叫她, 乖乖, 细心, 森林, 出了名, 人人, 见了, 都会, 夸她, 乖乖, 妈妈, 女儿, 自豪]
    
的 5
很 3
她 2
细心 2
可爱 2
在 2
森林 2
里 2
乖乖 2
出了名 1
都 1
为 1
听话 1
兔子 1
见了 1
都会 1
可是 1
女儿 1
叫她 1
大家 1
那 1
一个 1
一只 1
漂亮 1
这么 1
也 1
脸上 1
有着 1
自己 1
自豪 1
眼睛 1
小 1
晶莹 1
高兴 1
而 1
嵌 1
夸她 1
妈妈 1
有 1
人人 1
一双 1
着 1

另外在看源码的时候发现使用了一些有趣的类,例如 java.util.concurrent.atomic 的 AtomicInteger,看了用法,有一些收获。

Word中文分词的其它详情用法,看官方Readme和api文档

Readme:word/README.md at master · ysc/word (github.com)

api文档:Overview (word 1.3 API) (apdplat.org)