【python-词汇指标提取工具开发】自学笔记(1)-后端程序

1.终端与虚拟环境

  • base 和 venv 的区别(你经常看到 (venv) (base))

  • 为什么"装了包但 import 不到"

  • VS Code / PyCharm 运行时用的是哪个 Python

关键概念

  • 解释器路径:which python / which pip

  • 环境隔离:venv 里装的包只给这个工程用

  • 正确运行方式

    • 命令行:python -m src.xxx

    • VS Code:选择解释器为 venv/bin/python

现在的状态

✅ 已经能创建 venv、安装 pandas、MeCab,并能在终端跑通

⬆️ 还需要强化:解释器选择环境一致性

2.Python 包与导入机制

  • 为什么 python src/metrics/xxx.py 会找不到 src

  • 为什么 python -m src.metrics.xxx 可以

  • init.py 的作用

关键概念

  • 模块搜索路径:sys.path

  • :目录 + init.py

  • -m 的意义:把工程根目录当作包入口运行(更稳定)

现在的状态

✅ 已经知道要把 src 变成包

⬆️ 还需要:理解"相对导入/绝对导入"的规则与最佳实践

3. 路径与文件组织(工程化最核心)

需要搞清楚

  • 为什么要把 input/output/resources 分开

  • 为什么要用 Path() 而不是字符串

  • 为什么 Streamlit 上传文件要写进临时目录

关键概念

  • pathlib.Path:跨平台、可读性强

  • 相对路径 vs 绝对路径

  • BASE_DIR = Path(file).resolve().parents[1] 这种写法的意义(项目根目录定位)

现在的状态

✅ 已经按"工程结构"拆分好了文件夹

⬆️ 还需要:熟练处理"当前工作目录 (cwd)"导致的路径错误

4. 编码与文本预处理

需要搞清楚

  • 什么是 UTF-8 / UTF-8-sig / cp932 / shift-jis

  • 为什么 len(text) 很大但 MeCab token 只有 2(BOS/EOS)

  • 为什么 \x00(NUL)会让 MeCab "吃不到内容"

关键概念

  • bytes vs str

  • 解码策略:尝试多种编码,最后 replace 兜底

  • normalize_text:去 BOM、去 NUL、统一换行(放在 IO 层最合理)

现在的状态

✅ 已经有 io_utils.py 并把 normalize 做进 read_text_auto

⬆️ 还需要:知道"什么时候应该在 IO 层处理、什么时候在 NLP 层处理"

5. 数据结构:Token 设计

需要搞清楚

  • Token 里哪些字段是必须的:surface, lemma, pos, pos1, reading...

  • 为什么很多指标都依赖 lemma(类符)而不是 surface(形符)

  • pos(細分類)与 pos1(大分類)的区别

关键概念

  • 用 dataclass 表达 Token(类型清晰)

  • 统一 Token 字段命名,避免每个模块各写各的

现在的状态

✅ 已经能围绕 Token 写密度/多样性/难度/组合性

⬆️ 还需要:系统理解"字段一致性"对项目可维护性的影响

6. 指标计算的"可复用设计"

需要搞清楚

  • 为什么 4 个 metrics 文件要分开

  • 为什么要写成 compute_xxx(tokens, ...) -> dict

  • 为什么要把可变参数(阈值、OOV)作为函数参数,而不是写死路径

关键概念

  • 纯函数思维:输入 tokens,输出 dict(无副作用)

  • 参数化:threshold / treat_oov_as_low / shugo_map / freq_rank_map

  • 小工具函数:_is_punct, _filter_verbs 等

现在的状态

✅ 架构思路已经是"研究可复现"的写法

⬆️ 还需要:学会写更稳的异常处理(空文本、短文本、缺字段)

7.批处理与 DataFrame 合并输出(run_batch)

你需要搞清楚

  • 为什么要 row.update(...) 拼接 4 个 dict

  • 为什么把 file_name 放首列要做 cols = [...]

  • 为什么输出用 utf-8-sig(Excel 兼容)

关键概念

  • list[dict] → DataFrame

  • 列顺序控制

  • 输出目录创建:mkdir(parents=True, exist_ok=True)

现在的状态

✅ 已经能把整套指标输出成一个 CSV

⬆️ 还需要:学习"日志/进度条"和"异常文件跳过策略"

8. Streamlit:把脚本变成小应用

需要搞清楚

  • 为什么要用 streamlit run xxx.py

  • Local URL vs Network URL 的区别

  • 上传文件是 bytes,需要你自己保存/解码/清洗

关键概念

  • UI 与计算分离:Streamlit 只负责交互,计算调用 run_batch.main

  • 临时目录:tempfile.TemporaryDirectory()

  • 研究者版 vs 学生版:显示层不同,计算层相同

现在的状态

✅ 已经把工程跑到可用 app 的阶段

⬆️ 还需要:会做基本的 UI 组织(expander、tabs、下载按钮、参数面板)

相关推荐
高工智能汽车4 小时前
爱芯元智通过港交所聆讯,智能汽车芯片市场格局加速重构
人工智能·重构·汽车
大力财经4 小时前
悬架、底盘、制动被同时重构,星空计划想把“驾驶”变成一种系统能力
人工智能
喵手5 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
梁下轻语的秋缘5 小时前
Prompt工程核心指南:从入门到精通,让AI精准响应你的需求
大数据·人工智能·prompt
FreeBuf_5 小时前
ChatGPT引用马斯克AI生成的Grokipedia是否陷入“内容陷阱“?
人工智能·chatgpt
Suchadar5 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大5 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
福客AI智能客服5 小时前
工单智转:电商智能客服与客服AI系统重构售后服务效率
大数据·人工智能
柳鲲鹏6 小时前
OpenCV:超分辨率、超采样及测试性能
人工智能·opencv·计算机视觉
喵手6 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析