File size: 2,538 Bytes
86fe6bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
"""

可视化与分析脚本 — Person E 负责



功能:

1. 训练曲线绘制 (loss, BLEU, learning rate)

2. 实验结果对比图

3. 注意力权重可视化

4. 翻译样例展示

"""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src"))


def plot_training_curves(log_dir: str, output_path: str = "outputs/training_curves.png"):
    """

    绘制训练曲线。



    TODO [Person E]:

    1. 从 TensorBoard 日志或 CSV 读取训练数据

    2. 绘制子图:

       - Train Loss vs Steps

       - Val Loss vs Steps

       - BLEU vs Epochs

       - Learning Rate vs Steps

    3. 保存图片

    """
    raise NotImplementedError("TODO: Person E 实现 plot_training_curves")


def plot_experiment_comparison(results_dir: str, output_path: str = "outputs/experiment_comparison.png"):
    """

    绘制实验对比图。



    TODO [Person E]:

    1. 读取所有实验的评估结果

    2. 绘制柱状图: BLEU / COMET / chrF 对比

    3. 绘制表格: 所有指标汇总

    4. 保存图片

    """
    raise NotImplementedError("TODO: Person E 实现 plot_experiment_comparison")


def visualize_attention(

    model,

    src_text: str,

    tgt_text: str,

    tokenizer,

    output_path: str = "outputs/attention_map.png",

):
    """

    注意力权重可视化。



    TODO [Person E]:

    1. 获取模型的 encoder self-attention 和 cross-attention 权重

    2. 绘制热力图 (matplotlib / seaborn)

    3. x 轴: 源语言 tokens, y 轴: 目标语言 tokens

    4. 支持多头注意力的分别可视化和平均可视化

    """
    raise NotImplementedError("TODO: Person E 实现 visualize_attention")


def generate_translation_examples(

    evaluator,

    test_pairs: list[tuple[str, str]],

    output_path: str = "outputs/translation_examples.md",

):
    """

    生成翻译样例展示。



    TODO [Person E]:

    1. 翻译测试样例

    2. 生成 Markdown 格式的对比表格:

       | 源文 (英) | 参考翻译 (中) | 模型翻译 (中) | BLEU |

    3. 包含好的和差的翻译案例

    4. 保存为 Markdown 文件

    """
    raise NotImplementedError("TODO: Person E 实现 generate_translation_examples")


if __name__ == "__main__":
    print("请指定要运行的可视化任务")
    print("  python scripts/visualize.py --task training_curves --log_dir logs/")
    print("  python scripts/visualize.py --task comparison --results_dir outputs/")