Qifan Zhang commited on
Commit
ada2222
·
1 Parent(s): a917110

docs: add chinese project docs

Browse files
Files changed (3) hide show
  1. .pre-commit-config.yaml +6 -0
  2. AGENTS.md +50 -0
  3. README.md +76 -2
.pre-commit-config.yaml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.15.12
4
+ hooks:
5
+ - id: ruff-check
6
+ args: [--fix]
AGENTS.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 仓库维护指南
2
+
3
+ ## 项目定位
4
+
5
+ 这个仓库是 TransDis-CreativityAutoAssessment 的 Hugging Face Gradio Space。它使用 Transformer embedding 对发散思维数据进行评分,并对外提供两个任务:`Originality` 和 `Flexibility`。
6
+
7
+ `README.md` 是公开项目说明和 Space 入口文档;`AGENTS.md` 是后续 coding agent 的实现与维护指南。不要把维护规则塞进 README,也不要把用户说明写成 AGENTS 的主要内容。
8
+
9
+ ## 主要文件
10
+
11
+ - `app.py`:Gradio UI、输入解析、行数限制、任务分发、输出 CSV 生成。
12
+ - `utils/pipeline.py`:`Originality` 和 `Flexibility` 的评分流程。
13
+ - `utils/models.py`:模型列表、tokenizer/model 加载、pooling 行为。
14
+ - `data/description.txt`:Space 页面中展示的长篇双语说明。
15
+ - `.pre-commit-config.yaml`:本地 Ruff pre-commit hook。
16
+
17
+ ## 运行时规则
18
+
19
+ - Gradio SDK 版本写在 `README.md` 顶部的 YAML metadata 中;除非 Space 部署方式改变,不要把 `gradio` 加进 `requirements.txt`。
20
+ - `requirements.txt` 只放运行时依赖。影响 Space 重建稳定性的包应使用有边界的版本范围。
21
+ - Space 运行时是 Python 3.11。检查依赖或 Gradio 行为时,本地 smoke test 也应对齐 Python 3.11。
22
+ - 除非用户明确要求改性能策略,否则保留 `concurrency_limit=1`、`max_threads=1` 和 10,000 行输入上限。
23
+
24
+ ## 数据与 API 契约
25
+
26
+ - 文本输入是 CSV 文本。文件输入接受 `.csv` 和 `.xlsx`;如果文本和文件同时存在,文件输入优先。
27
+ - `Originality` 需要 `prompt` 和 `response` 列。
28
+ - `Flexibility` 需要 `id`、`prompt` 和 `response` 列。
29
+ - `process()` 按顺序返回三个输出:错误/状态文本、预览 dataframe、可下载文件路径。
30
+ - 错误输出必须是字符串,因为它由 `Textbox` 渲染。
31
+ - 输出文件应使用唯一临时 CSV 路径,不要共用固定的 `output.csv`,避免并发或重复请求互相覆盖。
32
+ - 文件输入处理应继续兼容这些 Gradio 值形态:filepath 字符串、`os.PathLike`、带 `.name` 的对象、或包含 `path` 的 dict。
33
+
34
+ ## 模型与评分规则
35
+
36
+ - 除非用户明确要求模型或评分变化,不要修改模型下拉列表、默认模型、pooling 选项或评分公式。
37
+ - `ModelWithPooling` 使用 Hugging Face `AutoTokenizer` 和 `AutoModel`;UI 暴露的 pooling 模式是 `mean` 和 `cls`。
38
+ - 避免在 app 启动时提前加载模型。模型下载和加载应只在处理请求时发生。
39
+ - 做轻量本地测试时,优先 monkeypatch `pipeline.p0_originality` / `pipeline.p1_flexibility`,不要为了普通 smoke test 下载大模型;只有真实推理验证才下载模型。
40
+
41
+ ## 检查命令
42
+
43
+ 交付改动前运行:
44
+
45
+ ```bash
46
+ python3 -B -m py_compile app.py utils/pipeline.py utils/models.py
47
+ uvx pre-commit run --all-files
48
+ ```
49
+
50
+ 如果改动涉及 Gradio 或依赖升级,还要运行 Python 3.11 smoke test:导入 `app`、检查 `gradio.__version__`、确认 `app.app` 可以构建。如果可以推送到 Hugging Face,则继续确认 Space 进入 `RUNNING`,并通过 Gradio queue API 运行最小 `Originality`、`Flexibility` 和文件上传请求。
README.md CHANGED
@@ -11,6 +11,80 @@ pinned: false
11
  license: mit
12
  ---
13
 
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
15
 
16
- ["Automatic Assessment of Divergent Thinking in Chinese Language with TransDis: A Transformer-Based Language Model Approach"](https://arxiv.org/abs/2306.14790)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  license: mit
12
  ---
13
 
14
+ ## 项目用途
15
 
16
+ TransDis-CreativityAutoAssessment 是一个用于自动评估发散思维回答的 Gradio 应用。它目前支持两类评分:
17
+
18
+ - **Originality**:计算每条 `prompt` 与 `response` 之间的语义距离,用于估计回答的独创性。
19
+ - **Flexibility**:计算同一 `id` + `prompt` 分组内多条回答之间的语义距离,用于估计回答的灵活性。
20
+
21
+ 本应用基于论文 ["Automatic Assessment of Divergent Thinking in Chinese Language with TransDis: A Transformer-Based Language Model Approach"](https://arxiv.org/abs/2306.14790)。
22
+
23
+ ## 输入格式
24
+
25
+ 可以直接在文本框中粘贴 CSV 文本,也可以上传 `.csv` / `.xlsx` 文件。如果同时提供文本框和文件输入,上传文件优先。
26
+
27
+ `Originality` 任务需要提供:
28
+
29
+ ```csv
30
+ id,prompt,response
31
+ 1,床单,过滤器
32
+ 1,bedsheet,used as a filter
33
+ ```
34
+
35
+ `Flexibility` 任务需要为同一个被试和同一个提示词提供多条回答:
36
+
37
+ ```csv
38
+ id,prompt,response
39
+ 1,床单,过滤器
40
+ 1,床单,做成渔网捞鱼
41
+ 1,床单,做成枕头
42
+ ```
43
+
44
+ 单次请求最多处理 10,000 行数据。
45
+
46
+ ## 模型选择
47
+
48
+ 应用会在下拉菜单中提供多语言、英文和中文 Transformer 检查点。默认模型是:
49
+
50
+ ```text
51
+ sentence-transformers/paraphrase-multilingual-mpnet-base-v2
52
+ ```
53
+
54
+ 可选 pooling 方式是 `mean` 和 `cls`。如果使用 `bert-base-chinese`,建议选择 `mean` pooling。
55
+
56
+ ## 本地开发
57
+
58
+ 此 Space 使用 Python 3.11 和 Gradio 6.14.0。Gradio 版本由 README 顶部的 Space metadata 控制,因此不会写入 `requirements.txt`。
59
+
60
+ ```bash
61
+ python3.11 -m venv .venv
62
+ source .venv/bin/activate
63
+ pip install gradio==6.14.0 -r requirements.txt
64
+ python app.py
65
+ ```
66
+
67
+ 安装并运行 pre-commit:
68
+
69
+ ```bash
70
+ uvx pre-commit install
71
+ uvx pre-commit run --all-files
72
+ ```
73
+
74
+ 推送前建议运行:
75
+
76
+ ```bash
77
+ python3 -B -m py_compile app.py utils/pipeline.py utils/models.py
78
+ uvx pre-commit run --all-files
79
+ ```
80
+
81
+ ## Hugging Face Space
82
+
83
+ 此 Space 由 README 顶部的 YAML 配置:
84
+
85
+ - `sdk: gradio`
86
+ - `sdk_version: 6.14.0`
87
+ - `python_version: "3.11"`
88
+ - `app_file: app.py`
89
+
90
+ 推送到 Space 仓库后,Hugging Face 会自动重建并重启应用。