Skip to content

About

基于 JavaFX 的中英文词频统计桌面应用 (Word Frequency Counter Desktop App)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Word Counter 词频统计

这个项目的目标一开始很简单:把一篇文章读进去,算出每个词出现了多少次。

第一版(2026-08-06)实现了这个核心目标:读 txt → 分词 → 统计词频 → 排序 → 导出报告。后面在用的过程中不断加东西:能读 Word/PDF 了、能统计多语言了、大文件不卡了、界面有主题有图标了。现在是一个能直接交付的桌面小工具。

现在能做什么

  • 读文件:txt / md / csv / log / json 直接读;docx / doc / pdf 用 POI 和 PDFBox 解析(大文件自动转后台读取不卡界面;超过 10 万字只显示前段,统计仍按全文)
  • 分词按 Unicode 字母类走,英文、中文、日文、阿拉伯文、俄文都认
  • 统计选项:大小写合并、包含数字、连字符/撇号处理、停用词过滤、最小词长
  • 结果按频率、字母序、词长排序,升降序都行(设置里是中文下拉)
  • 导出 CSV / JSON / TXT 报告
  • 界面中英双语,亮/暗主题;启动有 SplashScreen 进度条

开发方式说明

界面部分(FXML 布局、CSS 样式、JavaFX 控制器)主要通过 vibe coding(AI 辅助编程)完成:我先给出功能需求和界面设计,AI 生成大部分 UI 代码,再由我逐段审查、调试和修正。核心的统计逻辑(分词、计数、排序、文件解析)由我设计实现并验证,所有代码都经过人工检查和测试。

开发历程

  • v1(2026-08-06):核心功能完成——txt 读取、分词、词频统计、排序、导出。当时的实现是单文件管线(TextAnalyzer 里直接串起来)。
  • v2+(后续迭代):
    • 文档格式扩展:docx / doc / pdf
    • 分词重构为独立模块(tokenizer / filter / counter / sorter 分包)
    • 异步加载 + 大文本截断,解决"文件一大就卡死"
    • 占比列改为自绘进度条(原生 ProgressBar 颜色设置不生效)
    • 图标重制(黑底白"词")、启动动画同步换"词"、i18n 修复
    • 排序方式下拉本地化(原来显示 FREQUENCY_DESC,现在中文 + 英文随界面语言)
    • E 盘便携版(exFAT 上 exe 打不开,改用 javaw 直启)
    • .doc 解析修复(jpackage 精简运行时缺 jdk.charsets 字符集模块,打包参数补齐)

详细的开发过程和踩坑记录见 docs/项目开发报告.md。

怎么跑

mvn test          # 单元测试
mvn javafx:run    # 本地运行
mvn package       # 打包 jar

打包成免安装目录(Windows,无控制台窗口):

jpackage --type app-image --name WordCounter \
  --input target --main-jar wordcounter-1.0.0.jar \
  --main-class com.example.wordcounter.Launcher \
  --module-path <javafx-21.0.1-win.jar 所在目录> \
  --add-modules javafx.controls,javafx.fxml,java.naming,java.sql,java.management,java.xml,java.desktop \
  --dest dist

产物在 dist/WordCounter/,双击 WordCounter.exe。注意整个目录(exe + app + runtime)要一起拷,只拷 exe 跑不起来。

代码结构

src/main/java/com/example/wordcounter/:

  • io/:FileLoader(多格式读取)、ExportService(导出)、FileEncoder(编码检测)
  • service/:tokenizer(分词)、filter(停用词/词长/数字过滤)、counter(计数,串行+并行两个实现)、sorter(排序)、report(导出格式)、TextAnalyzer(主管线)
  • ui/:MainController、SettingsController(界面在 resources/fxml)
  • model/:AnalysisConfig、WordFrequency 等数据类

版本与备份

  • dist/WordCounter/:当前构建产物
  • WordCounter_旧版备份_0806/:v1 的打包产物(最早那一版)

About

基于 JavaFX 的中英文词频统计桌面应用 (Word Frequency Counter Desktop App)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages