计算机与语言学习:从编程到评估的全方位探索
1. 计算机助力语言学习概述
计算机与互联网技术在语言学习领域发挥着重要作用。一方面,计算机使得书籍出版变得更加容易。在过去,学习古希腊语的人即便有强大的计算机用于数值计算,但由于电子出版技术的缺失,难以复制希腊文献。直到1984年,Donald Knuth推出TeX,才实现了希腊书籍的排版,学生可以通过排版柏拉图的《理想国》来学习阅读希腊语。而eInk的发明,让出版书籍变得更加轻松,学生可以用不到200克的设备携带整个图书馆,阅读时还能触摸不认识的单词获取20种语言的释义。
另一方面,计算机通过互联网将学习者与母语者连接起来。例如,在美国学习中文的孩子会自发地与中国的人交流。
计算机辅助语言学习的工具可分为两类:一类是排版、词典构建和连接功能,这些不需要人工智能;另一类是自动字幕、翻译和语音转文本输入,需要大量的人工智能技术。
2. 编程理念与开源工具
在编程方面,传统计算机科学学生习惯从空白文本编辑器开始编写程序,但Richard Stallman认为这种方法是错误的。他建议学生从开源软件应用开始,根据自身需求进行调整、修复漏洞并扩展功能。语言教师可以使用许多开源工具来构建解析器,其中最容易安装和使用的是开源版的RASP。
下面以虚构人物Nia为例,介绍RASP的安装和使用步骤:
1. Nia在工作空间下载并解压RASP归档文件。
2. 在应用程序主目录中运行Makefile脚本:
~/wrk/rasp3os$ make
- 由于Nia对shell命令了解有限,她向密码学部门的Bob和Alice寻求帮助。几分钟后,Clozure Common Lisp和RASP系统出现在Nia的机器上。
3. Lisp语言在自然语言处理中的应用
Lisp语言具有两个独特的特点,使其特别适合人工智能领域。一是它有强大的数学基础,数学不会过时,尽管Lisp是最古老且广泛使用的计算机语言之一,但如今许多人工智能的优秀作品仍使用Lisp编写。二是Lisp的语法极其简单,程序和数据都用括号内的元素列表表示。当列表表示程序片段时,第一个元素是操作(命令或函数调用);当列表是数据时,前面加引号。
以下是Lisp语言的一些示例代码和操作:
- 定义词汇和语法规则:
;; 定义词汇表,每个单词与其语法类别关联
(setq words '((cat n) (the det) (chases v) (rat n)))
;; 语法规则,用Chomsky Normal Form表示
(setq grammar '((np (det n)) (s (np v np))))
- 创建哈希表进行字典查找:
;; 创建两个哈希表,使用#'equal谓词进行比较
(setq word-hash (make-hash-table :test #'equal))
(setq grammar-hash (make-hash-table :test #'equal))
;; 填充哈希表
(dolist (word words)
(setf (gethash (car word) word-hash) (cadr word)))
(dolist (rule grammar)
(setf (gethash (car rule) grammar-hash) (cadr rule)))
- 测试程序:
;; 加载必要的库
(load "cyk.lisp")
;; 测试nxt程序,计算16的平方根
(nxt (nr 16) #'equal '(3))
;; 测试列表操作函数
(car '(a x b e))
(cdr '(a x b e))
(cons 'top '(a x b e))
Lisp语言还有两个允许程序构建程序的机制:闭包和宏。有两本书可以帮助学习闭包和宏,分别是Paul Graham的书和Peter Seibel的《Practical Common Lisp》。
4. 解析器的问题与解决方法
在解析器方面,程序
cyk.lisp
存在问题。选择语法规则可能会使算法陷入死胡同,且确定性的CYK算法没有选择高成功概率规则的机制,甚至不处理概率问题。本文展示了基于列表的实现方式,因为可以轻松为无状态的数据结构(如列表)添加回溯功能。感兴趣的读者可以使用
screamer
库构建
cyk.lisp
解析器的回溯版本。
为了解决估计子树概率的问题,本文采用了结合概率和回溯的方法。优先选择成功概率最大的规则,在失败时接受回溯,这样对概率的粗略估计也是可以接受的。
5. 学生错误概率的评估
本文的主要贡献是提出了一种计算学生犯特定错误概率的方法。将错误描述为语法规则,例如主谓不一致的错误,一套规则可以接受像“The cat chase mouses”这样的句子并标记为错误。
为了估计概率,教师需要对学生进行建模并评估其进步。这里使用的方法是Measurement Theory,由Rasch、Lord和Lazarsfeld独立发展而来。与经典测试理论相比,Measurement Theory有明显优势,是高风险测试(如SAT)评分的首选方法。
6. 测量尺度与校准
6.1 测量尺度
以学生C和V为例,教师为了找出学生最常见的错误类型,可以编写错误语法。例如,英语作为第二语言的学生常见的主谓不一致错误,如“She walk in beauty”。通过编写接受此类句子的语法,比较学生C和V的文本中此类错误出现的频率。
假设学生C犯某类错误5次,学生V犯8次,差值为3。忽略两人同时犯错或同时避免错误的情况后,C的错误次数降为2次,V降为5次,差值仍为3。
学生C犯错误r的概率为Pcr,避免错误的概率为(1 - Pcr);学生V犯错误和避免错误的概率分别为Pvr和(1 - Pvr)。用N10表示C犯错而V避免错误的次数,N01表示C避免错误而V犯错的次数,它们的比值如下:
| 学生 | 犯错次数 | 避免错误次数 |
| ---- | ---- | ---- |
| C | Pcr | 1 - Pcr |
| V | Pvr | 1 - Pvr |
如果N10 / N01的比率不随错误类型的变化而变化,则称具有特定客观性。
选择测量尺度的原点时,考虑一个学生o,其犯错倾向与某个项目o的难易程度相匹配,该学生在一半的试验中会犯错,另一半试验中能避免错误。这个学生被称为无能尺度的原点,项目是难易尺度的原点。
6.2 校准
概率取决于难易程度和无能程度等参数,校准就是确定这些参数的过程。通过迭代算法将原始数据拟合到逻辑曲线上,具体步骤如下:
1. 计算数据矩阵Xn的行和列平均值,估计初始的难易程度和无能程度向量。
2. 调整难易程度向量,从每个元素中减去平均值。
3. 使用
probability
函数计算赔率,并将其值存储在二维数组中。
4. 计算当前概率矩阵和上一个概率矩阵之间的残差。
5. 计算概率矩阵的方差。
6. 对每个二维数组的每一行求和残差和方差,更新难易程度和无能程度向量。
7. 重复上述步骤,直到残差平方和足够小。
通过以上步骤,可以更准确地评估学生的语言学习情况,为教学提供有力的支持。同时,利用计算机和互联网技术,结合合适的编程语言和工具,能够更好地促进语言学习和教学。
计算机与语言学习:从编程到评估的全方位探索
7. 具体案例分析:以Nia的实践为例
Nia在完成RASP库的安装后,开始进一步测试和使用相关程序。她使用emacs文本编辑器和sbcl Lisp进行操作,以下是她的具体实践过程:
- 测试程序运行
;; 加载必要的库
(load "infix.cl")
(load "cyk.lisp")
在加载完成后,Nia对程序进行测试,例如使用
tree
函数处理输入句子:
(tree '(the cat chases the rat))
输出结果为:
((PHRASE) (NP SV) (NP TVERB NP)
(DET N TVERB DET N)
(THE CAT CHASES THE RAT))
这表明程序能够根据语法规则对输入的句子进行解析和处理。
-
规则检索与句子重写
Nia接下来编写了一个代码片段,用于检索语法规则并对输入列表进行重写。由于哈希表中的词汇量有限,输入句子只能是类似“the cat chases the rat”这样简单的句子。
8. Lisp语言的核心函数与应用
Lisp语言有几个核心函数在处理列表和数据时非常重要,以下是这些函数的详细介绍:
-
car和cdr函数 :在代数数据类型理论中,car和cdr被称为选择器。(car s)用于计算列表s的头部元素,(cdr s)用于计算列表s去除第一个元素后的剩余部分(即尾部)。例如:
(car '(a x b e)) ; 输出: a
(cdr '(a x b e)) ; 输出: (x b e)
-
cons函数 :cons函数被称为构造器,用于构建一个新的列表。(cons a s)会创建一个新列表,其头部元素为a,尾部元素为列表s。例如:
(cons 'top '(a x b e)) ; 输出: (top a x b e)
-
null函数 :(null s)用于检查列表s是否为空。 -
nxt函数 :nxt函数的作用是反复将一个函数应用于系列的第一个元素,直到系列收敛到一个固定值。该函数接受一个函数fn作为参数,因为不同的应用场景中fn会有所不同。例如,使用nxt函数计算平方根:
* (nxt (nr 16) #'equal '(3))
(4.0 4.0000014 4.003333 4.1666665 3)
这里的
(nr n)
函数用于构建一个计算
n
的平方根近似值的函数。
9. 概率与回溯在解析中的应用流程
为了更清晰地展示概率与回溯在解析过程中的应用,下面给出一个mermaid格式的流程图:
graph TD;
A[开始解析输入句子] --> B[选择语法规则];
B --> C{规则成功概率高?};
C -- 是 --> D[应用规则解析];
C -- 否 --> E[尝试其他规则];
D --> F{解析成功?};
F -- 是 --> G[输出解析结果];
F -- 否 --> H[回溯到上一步];
H --> B;
E --> B;
这个流程图展示了解析过程中如何优先选择高成功概率的规则,在失败时进行回溯,直到找到合适的解析方案或确定无法解析。
10. 学生评估的具体操作与案例
在学生评估方面,以学生C和V为例,具体操作步骤如下:
- 收集数据 :教师收集学生C和V的文本数据,统计他们在不同语法规则下的错误情况。
- 编写错误语法 :针对常见的错误类型,如主谓不一致,编写相应的错误语法规则。
- 计算错误次数 :统计学生C和V在特定错误类型上的错误次数,如前面提到的,C犯某类错误5次,V犯8次。
- 忽略共同情况 :忽略C和V同时犯错或同时避免错误的情况,重新统计错误次数,C降为2次,V降为5次。
- 计算概率和比值 :计算学生C和V犯错误和避免错误的概率,以及N10和N01的值,并计算比值N10 / N01。
- 判断特定客观性 :检查N10 / N01的比值是否不随错误类型的变化而变化,如果是,则具有特定客观性。
通过以上步骤,可以更准确地评估学生的语言学习情况,为教学提供有针对性的建议。
11. 总结与展望
计算机在语言学习中具有多方面的作用,从书籍出版的便利到通过互联网连接学习者与母语者,再到利用编程工具构建解析器和评估学生错误概率。Lisp语言因其独特的特点在自然语言处理中发挥着重要作用,而Measurement Theory为学生评估提供了科学的方法。
未来,随着技术的不断发展,计算机辅助语言学习将更加智能化和个性化。例如,解析器可以结合更多的语义信息,提高解析的准确性;评估系统可以根据学生的实时表现动态调整教学内容和难度。同时,更多的开源工具和资源将不断涌现,为语言学习和教学带来更多的可能性。
总之,计算机与语言学习的结合为我们提供了一个广阔的探索空间,通过不断地研究和实践,我们可以更好地利用计算机技术促进语言学习的发展。
超级会员免费看
2162

被折叠的 条评论
为什么被折叠?



