From 4a27c7c4c37ea87c6ec3287586513d016a4f96cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=AB=E5=A2=9E?= <2509165014@student.example.com> Date: Sun, 5 Jul 2026 18:00:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HEAD | 1 + README.md | 312 ++++++++++++++++++++++++++-------------------------- config | 14 +++ description | 1 + index | Bin 0 -> 3098 bytes 5 files changed, 172 insertions(+), 156 deletions(-) create mode 100644 HEAD create mode 100644 config create mode 100644 description create mode 100644 index diff --git a/HEAD b/HEAD new file mode 100644 index 0000000..b870d82 --- /dev/null +++ b/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/README.md b/README.md index 8b03608..95bb18e 100644 --- a/README.md +++ b/README.md @@ -1,156 +1,156 @@ - - -# 模拟考试(实操题) - -**考试时间**:90 分钟(2 课时) -**考试形式**:开卷 -**总分**:70 分 - ---- - -## ⚠️ 重要说明 - -- 本题所有代码、标注结果、图片都要上传到 **本仓库** 下 -- **文件夹必须按下面要求** 的结构创建,否则不得分 -- 数据爬取代码 **必须** 在一次爬取中获取到所有需要数据(数据刷新会变) - ---- - -## 第Ⅱ部分 实操题 - -### 一、数据爬取(25 分) - -**本题中涉及的爬虫代码必须包含检测头,同时由于网页刷新后数据会变化,必须在一次爬取中获取到所有需要数据,否则不得分。** - -#### 第 1 题(10 分) - -用 python 代码访问网址 `https://exam.detr.top/exam-b/movies`,抓取网页的数据编号和其中全部 10 部电影的信息,并分别保存为两个文件: - -- `movies.json`(存放数据编号和电影信息,电影中包含的键为 `id, title, director, year, rating, duration, genre, actors_count`) -- `movies.html`(保存原始网页源码) - -#### 第 2 题(15 分) - -根据 `movies.json` 中的数据: - -1. ① 找出评分最高和最低的电影,打印电影名 + 评分。 -2. ② 统计各类型的电影数量,用字典格式输出。 -3. ③ 统计各导演的电影数量,用字典格式输出。 -4. ④ 统计 2020 年(含)以后上映的电影数量。 - ---- - -### 二、数据标注(20 分) - -**本章中所有标注结果都需要导出文件,并上传到本仓库的 `q3` 文件夹下。每个小题单独放一个子文件夹。未按要求上传文件不得分。** - -#### 第 1 小题(8 分)— 图像目标检测标注 - -在 Label Studio 中打开图片 `data/images/标注练习1.jpg`(图片中含 1 只猫、1 只狗、1 辆车,背景为街道),使用 Rectangle Labels 工具标出 3 个目标物。要求: - -1. (1)边界框必须紧贴目标物轮廓 -2. (2)标签必须为 `cat`、`dog`、`car`(**必须小写英文**,不能写成"猫/狗/车"或"Cat/Dog/Car") -3. (3)导出为 YOLO 格式压缩包 -4. (4)将压缩包命名为 `q3_1_image_labels.zip` 并上传到 `q3/q3_1/` 文件夹 -5. (5)压缩包解压后必须包含 `classes.txt` 和 `labels/` 目录 - -#### 第 2 小题(7 分)— 文本情感分类标注 - -现有 5 条外卖评论文本 `data/reviews.json`,用 Label Studio 完成情感分类标注(标签:正面/负面),导出为 JSON 格式。要求: - -1. (1)标注必须包含每条评论的 `id` 和 `text` 字段 -2. (2)每个标注必须有一个 `sentiment` 字段,值为 `"正面"` 或 `"负面"` -3. (3)5 条评论必须全部标注 -4. (4)将导出文件命名为 `q3_2_takeout_reviews.json` 并上传到 `q3/q3_2/` 文件夹 - -#### 第 3 小题(5 分)— 标注质量自评 - -在 `q3` 文件夹下新建 `q3_3_质量自评.md` 文件,写一份 200 字左右的标注质量自评报告,内容包括: - -1. (1)标注前准备 —— 你制定了什么标注规范?看了几张示例图片?(2 分) -2. (2)标注过程 —— 遇到什么困难?如何解决?中途不确定的标注如何处理?(2 分) -3. (3)标注后检查 —— 做了哪些检查?是否导入了多份相同数据互相对比?(1 分) - ---- - -### 三、数据可视化(25 分) - -**本章所有图表都要用 matplotlib 绘制,PNG 文件必须用 `plt.savefig` 保存。所有 Python 代码和 PNG 文件都需要上传到本仓库的 `q4` 文件夹下,每个小题单独一个子文件夹。** - -#### 第 1 小题(8 分)— 柱状图 - -从 `movies.json`(本卷第 II 部分保存的 `movies.json`)读取数据,用 matplotlib 绘制**各类型的电影数量柱状图**。要求: - -1. (1)使用 `plt.bar` 函数绘制柱状图 -2. (2)X 轴为类型名称 -3. (3)Y 轴为电影数量 -4. (4)标题设置为"类型电影数量分布"(用 `plt.title`) -5. (5)保存为 `q4_1_bar.png`(用 `plt.savefig`,`dpi=150`) -6. (6)Python 代码保存为 `q4_1.py` - -#### 第 2 小题(7 分)— 散点图 - -从 `movies.json` 读取数据,用 matplotlib 绘制**评分 vs 时长散点图**。要求: - -1. (1)使用 `plt.scatter` 函数绘制散点图 -2. (2)X 轴为时长(分钟),Y 轴为评分 -3. (3)标题设置为"时长与评分关系散点图"(用 `plt.title`) -4. (4)使用 `plt.xlabel` 和 `plt.ylabel` 设置轴标签 -5. (5)点的颜色设为红色,`alpha=0.6`(半透明) -6. (6)保存为 `q4_2_scatter.png`(用 `plt.savefig`,`dpi=150`) -7. (7)Python 代码保存为 `q4_2.py` - -#### 第 3 小题(10 分)— 直方图 - -从 `movies.json` 读取数据,绘制**两张独立的直方图**: - -- **(A)评分直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影评分字段的分布直方图,`bins=5`,颜色蓝色,标题"评分分布"(用 `plt.title`),X 轴标签"评分"(用 `plt.xlabel`),保存为 `q4_3a_hist.png`(`dpi=150`),代码保存为 `q4_3a.py` -- **(B)时长直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影时长字段的分布直方图,`bins=5`,颜色绿色,标题"时长分布",X 轴标签"时长(分钟)",保存为 `q4_3b_hist.png`(`dpi=150`),代码保存为 `q4_3b.py` - ---- - -## 📁 仓库文件夹结构(必须按这个提交) - -``` -simulated-examination/ -├── data/ # 模拟考数据(已上传) -│ ├── images/ -│ │ └── 标注练习1.jpg -│ └── reviews.json -├── q2_1_crawler/ -│ ├── q2_1.py # 数据爬取第 1 题代码 -│ ├── q2_2.py # 数据爬取第 2 题代码 -│ ├── movies.json # 爬取结果(由 q2_1.py 生成) -│ └── movies.html # 原始网页(由 q2_1.py 生成) -├── q3/ -│ ├── q3_1/ -│ │ └── q3_1_image_labels.zip # 图像标注 YOLO 导出 -│ ├── q3_2/ -│ │ └── q3_2_takeout_reviews.json # 文本标注 JSON 导出 -│ └── q3_3_质量自评.md -├── q4/ -│ ├── q4_1/ -│ │ ├── q4_1.py # 柱状图代码 -│ │ └── q4_1_bar.png # 柱状图结果 -│ ├── q4_2/ -│ │ ├── q4_2.py # 散点图代码 -│ │ └── q4_2_scatter.png # 散点图结果 -│ ├── q4_3a/ -│ │ ├── q4_3a.py # 评分直方图代码 -│ │ └── q4_3a_hist.png # 评分直方图结果 -│ ├── q4_3b/ -│ │ ├── q4_3b.py # 时长直方图代码 -│ │ └── q4_3b_hist.png # 时长直方图结果 -``` - ---- - -## 提交方式 - -1. 在本仓库下**按上面的文件夹结构**创建目录 -2. 依次完成 3 大题的所有小题 -3. 每完成一题就 `git add` + `git commit` + `git push` 到本仓库 -4. 考试结束时**最后一次 commit 时间**视为交卷时间 + + +# 模拟考试(实操题) + +**考试时间**:90 分钟(2 课时) +**考试形式**:开卷 +**总分**:70 分 + +--- + +## ⚠️ 重要说明 + +- 本题所有代码、标注结果、图片都要上传到 **本仓库** 下 +- **文件夹必须按下面要求** 的结构创建,否则不得分 +- 数据爬取代码 **必须** 在一次爬取中获取到所有需要数据(数据刷新会变) + +--- + +## 第Ⅱ部分 实操题 + +### 一、数据爬取(25 分) + +**本题中涉及的爬虫代码必须包含检测头,同时由于网页刷新后数据会变化,必须在一次爬取中获取到所有需要数据,否则不得分。** + +#### 第 1 题(10 分) + +用 python 代码访问网址 `https://exam.detr.top/exam-b/movies`,抓取网页的数据编号和其中全部 10 部电影的信息,并分别保存为两个文件: + +- `movies.json`(存放数据编号和电影信息,电影中包含的键为 `id, title, director, year, rating, duration, genre, actors_count`) +- `movies.html`(保存原始网页源码) + +#### 第 2 题(15 分) + +根据 `movies.json` 中的数据: + +1. ① 找出评分最高和最低的电影,打印电影名 + 评分。 +2. ② 统计各类型的电影数量,用字典格式输出。 +3. ③ 统计各导演的电影数量,用字典格式输出。 +4. ④ 统计 2020 年(含)以后上映的电影数量。 + +--- + +### 二、数据标注(20 分) + +**本章中所有标注结果都需要导出文件,并上传到本仓库的 `q3` 文件夹下。每个小题单独放一个子文件夹。未按要求上传文件不得分。** + +#### 第 1 小题(8 分)— 图像目标检测标注 + +在 Label Studio 中打开图片 `data/images/标注练习1.jpg`(图片中含 1 只猫、1 只狗、1 辆车,背景为街道),使用 Rectangle Labels 工具标出 3 个目标物。要求: + +1. (1)边界框必须紧贴目标物轮廓 +2. (2)标签必须为 `cat`、`dog`、`car`(**必须小写英文**,不能写成"猫/狗/车"或"Cat/Dog/Car") +3. (3)导出为 YOLO 格式压缩包 +4. (4)将压缩包命名为 `q3_1_image_labels.zip` 并上传到 `q3/q3_1/` 文件夹 +5. (5)压缩包解压后必须包含 `classes.txt` 和 `labels/` 目录 + +#### 第 2 小题(7 分)— 文本情感分类标注 + +现有 5 条外卖评论文本 `data/reviews.json`,用 Label Studio 完成情感分类标注(标签:正面/负面),导出为 JSON 格式。要求: + +1. (1)标注必须包含每条评论的 `id` 和 `text` 字段 +2. (2)每个标注必须有一个 `sentiment` 字段,值为 `"正面"` 或 `"负面"` +3. (3)5 条评论必须全部标注 +4. (4)将导出文件命名为 `q3_2_takeout_reviews.json` 并上传到 `q3/q3_2/` 文件夹 + +#### 第 3 小题(5 分)— 标注质量自评 + +在 `q3` 文件夹下新建 `q3_3_质量自评.md` 文件,写一份 200 字左右的标注质量自评报告,内容包括: + +1. (1)标注前准备 —— 你制定了什么标注规范?看了几张示例图片?(2 分) +2. (2)标注过程 —— 遇到什么困难?如何解决?中途不确定的标注如何处理?(2 分) +3. (3)标注后检查 —— 做了哪些检查?是否导入了多份相同数据互相对比?(1 分) + +--- + +### 三、数据可视化(25 分) + +**本章所有图表都要用 matplotlib 绘制,PNG 文件必须用 `plt.savefig` 保存。所有 Python 代码和 PNG 文件都需要上传到本仓库的 `q4` 文件夹下,每个小题单独一个子文件夹。** + +#### 第 1 小题(8 分)— 柱状图 + +从 `movies.json`(本卷第 II 部分保存的 `movies.json`)读取数据,用 matplotlib 绘制**各类型的电影数量柱状图**。要求: + +1. (1)使用 `plt.bar` 函数绘制柱状图 +2. (2)X 轴为类型名称 +3. (3)Y 轴为电影数量 +4. (4)标题设置为"类型电影数量分布"(用 `plt.title`) +5. (5)保存为 `q4_1_bar.png`(用 `plt.savefig`,`dpi=150`) +6. (6)Python 代码保存为 `q4_1.py` + +#### 第 2 小题(7 分)— 散点图 + +从 `movies.json` 读取数据,用 matplotlib 绘制**评分 vs 时长散点图**。要求: + +1. (1)使用 `plt.scatter` 函数绘制散点图 +2. (2)X 轴为时长(分钟),Y 轴为评分 +3. (3)标题设置为"时长与评分关系散点图"(用 `plt.title`) +4. (4)使用 `plt.xlabel` 和 `plt.ylabel` 设置轴标签 +5. (5)点的颜色设为红色,`alpha=0.6`(半透明) +6. (6)保存为 `q4_2_scatter.png`(用 `plt.savefig`,`dpi=150`) +7. (7)Python 代码保存为 `q4_2.py` + +#### 第 3 小题(10 分)— 直方图 + +从 `movies.json` 读取数据,绘制**两张独立的直方图**: + +- **(A)评分直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影评分字段的分布直方图,`bins=5`,颜色蓝色,标题"评分分布"(用 `plt.title`),X 轴标签"评分"(用 `plt.xlabel`),保存为 `q4_3a_hist.png`(`dpi=150`),代码保存为 `q4_3a.py` +- **(B)时长直方图(5 分)**:使用 `plt.hist` 函数绘制 10 部电影时长字段的分布直方图,`bins=5`,颜色绿色,标题"时长分布",X 轴标签"时长(分钟)",保存为 `q4_3b_hist.png`(`dpi=150`),代码保存为 `q4_3b.py` + +--- + +## 📁 仓库文件夹结构(必须按这个提交) + +``` +simulated-examination/ +├── data/ # 模拟考数据(已上传) +│ ├── images/ +│ │ └── 标注练习1.jpg +│ └── reviews.json +├── q2_1_crawler/ +│ ├── q2_1.py # 数据爬取第 1 题代码 +│ ├── q2_2.py # 数据爬取第 2 题代码 +│ ├── movies.json # 爬取结果(由 q2_1.py 生成) +│ └── movies.html # 原始网页(由 q2_1.py 生成) +├── q3/ +│ ├── q3_1/ +│ │ └── q3_1_image_labels.zip # 图像标注 YOLO 导出 +│ ├── q3_2/ +│ │ └── q3_2_takeout_reviews.json # 文本标注 JSON 导出 +│ └── q3_3_质量自评.md +├── q4/ +│ ├── q4_1/ +│ │ ├── q4_1.py # 柱状图代码 +│ │ └── q4_1_bar.png # 柱状图结果 +│ ├── q4_2/ +│ │ ├── q4_2.py # 散点图代码 +│ │ └── q4_2_scatter.png # 散点图结果 +│ ├── q4_3a/ +│ │ ├── q4_3a.py # 评分直方图代码 +│ │ └── q4_3a_hist.png # 评分直方图结果 +│ ├── q4_3b/ +│ │ ├── q4_3b.py # 时长直方图代码 +│ │ └── q4_3b_hist.png # 时长直方图结果 +``` + +--- + +## 提交方式 + +1. 在本仓库下**按上面的文件夹结构**创建目录 +2. 依次完成 3 大题的所有小题 +3. 每完成一题就 `git add` + `git commit` + `git push` 到本仓库 +4. 考试结束时**最后一次 commit 时间**视为交卷时间 diff --git a/config b/config new file mode 100644 index 0000000..8d44076 --- /dev/null +++ b/config @@ -0,0 +1,14 @@ +[core] + repositoryformatversion = 0 + filemode = false + bare = false + logallrefupdates = true + symlinks = false + ignorecase = true +[remote "origin"] + url = https://gitea.detr.top/gitea_eternal/simulated-examination.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "main"] + remote = origin + merge = refs/heads/main + vscode-merge-base = origin/main diff --git a/description b/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/index b/index new file mode 100644 index 0000000000000000000000000000000000000000..b479fd1c265f326d1eded4185ba7b5c050c70ee8 GIT binary patch literal 3098 zcmbW33rtg29L7&6f&(4pDKu6}+=2?b(1*hfP`81CjxZ1(L)o=09h67uOXM+(h`@#} zq9HDBq9_C$LSz$_ft$Lmj7P>q=L5uM3#dhOtvo~s#GQNED`nhTS(D~#dUAgE`+xU; z9wFh;9{>QX;Fq1WZrMFvP_;Fw@IT`xw}Siyz`|Yo=-a8N(`Iv8|GXeVdwTDoMPc4xe!M^>@WT=$ zs${WPhNhAnQfI|;K|D#SAVI90jy3q)dZ7$)p;B{CC^}s7HWhyuul}hs^w}KOkeD^G z%SC`?%DrD!c>nCF2Tgf>Ka_E>Bw50gZ;O1Z3OCOo7tYGgccnwUS<%c&8FeQl?1_ev_@|BEL|n{hGXy(PTGA_q&gnQmL)M+UuTA05FaWv-%R~Rzuf=&wa9Z@vhCAFtdi0zw4%nRVJ&Ur zkt3rMZNSUmmrI1e#Z`i2aoP?QK64#dT9s}~^{F!}leN`FaLZ$X+ zrvIHuo^eSTT7Sx?MJ`Qqc4=eI^47<{TRS9)Jp#Jai+yYM00)vwm?c)fF~`0;GUO8~ zwa@p1M^nL-KHCN*rQhIML@Yqn2Oo-_J%c$q)) z36p`}JnrS-9^R>n3=(QY28R#KufX9#ZGe^weB4c{&=n zJd?AUQL$b|v$ z1myX|hxNXkw@Q&$bfof^_AB6c?%cXyXQt0}=TG9{{xOY*CrXqmV~dhJQmK7f$Wu7A ziy+SOvKCUQc^2{%n#t25mzIb*t$0fxUf7p;bfCbiXYgnLvBle78_)b zvNu-D)3@GAi4xn%dEjj}*RE&q*mptW#k!t3_2K#&&EXrp37d)I4shB2b|-DLHrD5= zbX|V$_=d&J`4qkv%*nMa;EI8rT&ee4%Qj0(}{N9qJ0to&xfRjVRj z(eQ#pzOAnp5?4Vu$g%6G*R@9W=FpN(u9QwrR??;I