案例展示 CSC 485H/2501H: Computational Linguistics - Assignment 1
编辑案例展示 CSC 485H/2501H: Computational Linguistics - Assignment 1 Python代写
任务概述
在 CSC 485H/2501H 课程的第一个作业中,学生将接触到两种主要的依存句法分析方法:基于转换的依存句法分析 和 基于图的依存句法分析。这次作业的目的是通过实现这些方法,深入理解依存句法分析的基本原理以及如何通过不同的解析方式构建依存树。本次作业共分为两个主要部分:
- 基于转换的依存句法分析(42分)
- 基于图的依存句法分析(58分)
1. 基于转换的依存句法分析 (Transition-based Dependency Parsing)
(a) 完成转换序列
在解析句子 “To raise those doubts is to resolve them” 时,学生需要完成每一步的转换操作并记录堆栈和缓冲区的变化。这一步考查学生对 SHIFT、LEFT-ARC 和 RIGHT-ARC 操作的理解,并通过递归的解析操作生成最终的依存树。
(b) 解析一个句子的步骤数
当解析包含 n 个单词的句子时,共需要 2n - 1 步。这是因为堆栈和缓冲区在每次 SHIFT 操作后都会发生变化,直到所有单词都从缓冲区转移到堆栈。每个非 ROOT 词语则需要通过 LEFT-ARC 或 RIGHT-ARC 操作建立依存关系。
(c) 实现 PartialParse 类中的方法
学生需要在 q1_parse.py
文件中实现 complete
和 parse_step
方法,完成转换机制的功能。此外,还需要实现 get_nrightmost
和 get_nleftmost
方法。运行 python3 run_test.py q1-c
可以进行基本测试。
(d) 实现小批量解析算法
在 q1_parse.py
中,学生需要按照算法1实现 minibatch_parse
函数,用于批量解析句子,提升解析的效率。基本测试可以通过运行 python3 run_test.py q1-d
来进行。
(e) 实现 Oracle
在 q1_parse.py
中,学生需要实现 get_oracle
方法,该方法将根据正确的依存弧为部分解析提供下一个转换操作的建议。运行 python3 run_test.py q1-e
可以进行测试。
(f) 实现神经网络分类器
在 q1_model.py
中,学生需要构建一个神经网络分类器,用于根据堆栈、缓冲区和依存关系的状态来预测下一个转换操作。训练和评估可以通过运行 python3 train.py q1
来完成。
(g) 额外任务
学生可以探索 ChatGPT 是否能在零样本或少量样本条件下进行依存解析,并将其与自己的模型进行比较。需要报告使用的提示语并评估 ChatGPT 的表现。
2. 基于图的依存句法分析 (Graph-based Dependency Parsing)
(a) 基于转换的解析机制的局限性
基于转换的解析方法无法生成非投射的依存树。这部分要求学生理解为何基于转换的方法只能处理投射的依存树,以及非投射依存树的特点。
(b) 实现 is_projective 函数
在 q2_algorithm.py
中,学生需要实现 is_projective
函数,用于判断给定的依存树是否是投射树。
(c) 计算 Gap Degree
学生需要计算句子中每个词的 gap degree,并了解如何通过词的子序列判断其 gap degree 值。
(d) 实现 Arc Scorer
在 q2_model.py
中,学生需要实现 create_arc_layers
和 score_arcs
函数,来为依存弧进行打分。
(e) 权重矩阵的初始化
为了确保神经网络的稳定训练,学生需要使用 Kaiming 初始化策略来初始化权重矩阵。这部分需要学生推导如何从高斯分布转化为均匀分布进行初始化。
(f) 实现 Label Scorer
在 q2_model.py
中,学生需要实现 create_label_layers
和 score_labels
函数,来为依存标签进行打分。
(g) Arc 和 Label Scorer 的项选择
学生需要理解为什么在 arc scorer 中只包含 HA 而不包含 DA 的项。
(h) 多次乘法操作
在标准分类问题中,我们通常只进行一次矩阵乘法,而在本模型中需要进行两次。这是因为该模型需要捕捉依存图中顶点之间的复杂关系。
(i) 实现约束
在 q2_model.py
中,学生需要实现 mask_possible
函数,来对弧和标签的组合进行约束。
(j) 使用最大生成树算法
由于依存树需要形成树结构,因此需要使用最大生成树算法来预测最终的弧。
(k) 实现剩余函数
在 q2_algorithm.py
中,学生需要完成 is_single_root
和 mst_single_root
的实现。
(l) 找出不同解析结果的句子
学生需要找到至少三个句子,这些句子的解析结果在基于转换的解析器和基于图的解析器之间存在差异,但两者都不正确。并比较两种解析结果,分析哪种结果更好。
提交要求
学生需通过 MarkUs 提交以下文件:
a1written.pdf
:包含所有书面答案的 PDF 文件。q1_model.py
:已完成实现的 Python 文件。q1_parse.py
:已完成实现的 Python 文件。q2_algorithm.py
:已完成实现的 Python 文件。q2_model.py
:已完成实现的 Python 文件。weights-q1.pt
和weights-q2.pt
:模型训练后的权重文件。
联系我们
WeChat:pythonyt001
Email: [email protected]
- 0
-
分享