Java 结合中文分词库 jieba 统计一堆文本中各个词语的出现次数【代码记录】

news/2024/7/23 8:25:03 标签: java, 中文分词, 开发语言

文章目录

    • 1、需求
    • 2、代码
    • 3、结果

1、需求

在这里插入图片描述

2、代码

java">package com.zibo.main;

import com.huaban.analysis.jieba.JiebaSegmenter;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class WordCount {

    public static void main(String[] args) {
        String file = "C:\\Users\\Administrator\\Desktop\\video_film_no_spaces.txt";

        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            // 读取文本
            StringBuilder content = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line);
            }
            String text = content.toString();
            // 创建一个HashMap用于存储词语和出现次数
            Map<String, Integer> wordCounts = new HashMap<>();

            // 使用"jieba"分词库进行中文分词
            JiebaSegmenter segmenter = new JiebaSegmenter();
            List<String> words = segmenter.sentenceProcess(text);

            // 遍历每个词语并统计出现次数
            for (String word : words) {
                // 如果词语已经在HashMap中,则将其计数加1
                if (wordCounts.containsKey(word)) {
                    int count = wordCounts.get(word);
                    wordCounts.put(word, count + 1);
                }
                // 如果词语不在HashMap中,则将其添加到HashMap并设置计数为1
                else {
                    wordCounts.put(word, 1);
                }
            }

            // 输出每个词语及其出现次数
            for (Map.Entry<String, Integer> entry : wordCounts.entrySet()) {
                String word = entry.getKey();
                // 如果文字长度小于 2 ,跳过
                if (word.length() < 2) {
                    continue;
                }
                // 如果文字不是中文,跳过
                if (!word.matches("[\\u4e00-\\u9fa5]+")) {
                    continue;
                }
                int count = entry.getValue();
                System.out.println(word + " 出现了 " + count + " 次");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3、结果

D:\MySoft\Environment\Java\jdk-17.0.5\bin\java.exe "-javaagent:D:\MySoft\JetBrains\IntelliJ IDEA 2022.3.1\lib\idea_rt.jar=54655:D:\MySoft\JetBrains\IntelliJ IDEA 2022.3.1\bin" -Dfile.encoding=UTF-8 -classpath 
......
com.zibo.main.WordCount
main dict load finished, time elapsed 603 ms
model load finished, time elapsed 29 ms.
惊栗 出现了 2 次
经典 出现了 9 次
剧情片 出现了 1 次
音乐喜剧 出现了 32 次
儿童 出现了 23 次
灾难 出现了 39 次
同性 出现了 23 次
犯罪 出现了 963 次
喜剧片 出现了 1 次
动画 出现了 81 次
传记 出现了 57 次
惊悚 出现了 804 次
冒险 出现了 548 次
奇幻 出现了 490 次
爱情喜剧 出现了 370 次
枪战 出现了 1 次
历史 出现了 120 次
伦理 出现了 18 次
其他 出现了 1 次
音乐 出现了 30 次
剧情 出现了 1725 次
爱情 出现了 502 次
家庭 出现了 205 次
动作 出现了 3004 次
喜剧 出现了 2807 次
情色 出现了 4 次
性喜剧 出现了 28 次
脱口秀 出现了 9 次
科幻 出现了 347 次
运动 出现了 74 次
恐怖 出现了 291 次
戏曲 出现了 2 次
黑色 出现了 1 次
电影 出现了 1 次
西部 出现了 53 次
悬疑剧 出现了 33 次
纪录片 出现了 8 次
歌舞 出现了 38 次
文艺 出现了 6 次
纪录 出现了 2 次
悬疑 出现了 252 次
古装 出现了 208 次
古装剧 出现了 92 次
短片 出现了 9 次
歌舞剧 出现了 7 次
武侠 出现了 194 次
战争 出现了 212 次
鬼怪 出现了 1 次

Process finished with exit code 0



http://www.niftyadmin.cn/n/454514.html

相关文章

基于spss的多元统计分析 之 聚类分析+判别分析(3/8)

实验目的&#xff1a; 1. 掌握多元数据的相关性、正态性、可视化表征的基本原理&#xff1b; 2&#xff0e;熟悉掌握SPSS软件/R软件的基本用法和基本操作&#xff1b; 3&#xff0e;利用实验指导中及软件中内置的实例数据&#xff0c;上机熟悉相关性检验正态性检验可视化数据方…

【计算机视觉】CVPR 2023 上的分割论文真的是神仙打架(介绍前12篇,图像分割,全景分割,语义分割,实例分割)

文章目录 一、图像分割类1.1 AutoFocusFormer: Image Segmentation off the Grid1.2 FreeSeg: Unified, Universal and Open-Vocabulary Image Segmentation1.3 Parameter Efficient Local Implicit Image Function Network for Face Segmentation 二、全景分割类2.1 You Only …

doris docker部署和本地化部署 1.2.4.1版本

写在前面 以下操作语句按顺序执行即可&#xff0c;注意切换目录的命令一定记得执行&#xff0c;如果需要改动的地方会有${}注释&#xff0c;其余不需要任何改动&#xff0c;默认安装版本为1.12.4&#xff08;稳定版&#xff09; 本地化部署 下载 # 创建目录 mkdir /data/sof…

23他山之石:谈一谈Protocol Buffer

在专栏的最后部分,我打算用单独的一篇文章来讲一下Protocol Buffers,它是Google公司开发的一种数据描述语言,简称Protobuf,文件由proto结尾,没错,在专栏开始时就已经接触到它了。 说到数据描述性语言,不知道大家有没有想到另一个比较常见的概念,超文本标记语言——HTM…

桥接模式简介

桥接模式 简介核心思想应用场景示例优点和缺点 简介 桥接模式是一种面向对象设计模式&#xff0c;旨在实现两个不相关类的扩展。它主要包含两个部分&#xff1a;抽象部分和实现部分。抽象部分定义了类的接口&#xff0c;而实现部分则实现了抽象部分所定义的接口。在桥接模式中&…

Agilent N9020A 频谱分析仪

N9020A 是一款来自 Agilent 的信号分析仪&#xff0c;具有高达 26.5 GHz 的内部前置放大器选项。 ?附加的功能&#xff1a; 功能&#xff1a; 20 Hz 至 3.6、8.4、13.6 或 26.5 GHz&#xff1b;高达 26.5 GHz 的内部前置放大器选项 25 MHz&#xff08;标准&#xff09;或 40 M…

Java本地缓存

Java本地缓存 Java实现本地缓存的方式有很多&#xff0c;其中比较常见的有HashMap、Guava Cache、Caffeine和Encahche等。这些缓存技术各有优缺点&#xff0c;你可以根据自己的需求选择适合自己的缓存技术。以下是一些详细介绍&#xff1a; HashMap:通过Map的底层方式&#xf…

第六章、用户体验五要素之框架层解析(本文作用是通俗讲解,让你更容易理解)

结构层定义产品运行形式&#xff0c;框架层则用于确定用什么样的功能或者形式来实现。在框架层&#xff0c;功能型和信息型产品都需要信息设计&#xff0c;不同的是功能型还需要界面设计&#xff0c;而信息型产品则是导航设计。 1、界面设计&#xff1a;如果涉及提供给…