Quantitative Linguistics
关于这个学科(转载)
计量语言学是以真实的语言交际活动中呈现的各种语言现象、语言结构、结构属性以及它们之间的相互关系作为研究对象,
通过概率论、随机过程、微分与微分方程、函数论等数学的定量方法(与代数等数学的定性方法相对)对其进行精确的测量、观察、模拟、建模和解释,
寻找语言现象背后的数理规律,揭示各种语言现象形成的内在原因,
探索语言系统的自适应机制和语言演化的动因。
简言之,计量语言学是以真实语料为基础、用精确的方法来研究语言结构与发展规律的语言学分支学科。
语言是人所使用的符号工具、使用的这种工具的行为是言语动作,而行为的结果是语言数据。
语言学通过言语动作和语言数据来研究语言。
语言智能,通过语言数据(让机器)模拟言语行为,挖掘其中蕴含的信息。
- 语言智能
- 研究目标:使计算机理解和运用自然语言
- 常见任务:语音合成、语音识别、光学字符识别(Optical Character Recognition,OCR)、词法分析、句法分析、机器翻译等
- 语言资源
- 广义:包括语言数据、具有特定语言能力的人、语言文化成果、语言研究的成果等。
- 狭义:指大规模的可使用的语言数据。
PPT:
- QL04-1句法和句义
- 句子的语言学结构:句法成分
- 句子的语言学结构:句型
- 句法信息的表示形式:短语结构语法、依存语法
- 句子的语义
- QL04-2篇章和修辞
- 篇章的结构:修辞
- 篇章信息处理主要任务:文本分类、自动摘要、信息抽取、指代消解
- 修辞结构理论RST
- QL04-3对话
- 对话的结构:语境、会话、会话准则
- 对话信息处理
第五周及以后
- 科学是什么?
- 反映自然社会思维等的客观规律的分科的知识体系。 ——《现代汉语词典》
- 科学可以被认为是三重结合体,由对象、途径和理论三个核心要素共同作用的一个完整体系。
- 科学的第一核心要素:研究的对象
- 研究的对象是:
- 某一事物或事物的某些属性
- 如事物:水星,属性:质量、大小
- 属性之间的相互关系,各类关系的结构
- 如:引力-半径,公转周期-角速度
- 这些结构的功能,这些功能的构建过程
- 如:引力和轨迹-航天器减速
- 综合系统与这个系统演化的历史
- 如:水星对我们的意义?水星如何形成
- 科学的第二核心要素:途径
- 研究的视角
- 研究的目标(应用、描述、预测、追溯、理解、解释)
- 研究的核心问题
- 实证性问题
- 概念性问题
- 方法论问题,如:靠大量观测数据推测轨迹是否合理?
- 评价性问题
- 研究的方法(直觉、反省、观察、实验、归纳和演绎)
- 定性的方法不仅是文字的描述,也包括定性的数学方式,如代数逻辑集合的理论和图示等等。
- 定量的方法指的是数学定律组合学概率论,微积分方程等表现形式。
- 科学的第三核心要素:理论
- 概念
- 概念是人脑对客观事物本质的反映,是对特征的独特组合而形成的知识单元
- 概念是理论存在的必要不充分条件
- 假设
- 定律
- 在理论上和实证上都有根有据的假设才可以称为定律
- 定律是对生成可观察现象的机制的陈述
- 概念
- 科学的语言学理论尚且不存在
- 计量语言学中的普适定律
分布定律
,描述语言结构在语言系统和语言使用中的定量特征函数定律
,描述不同的语言结构及其属性间的相互关系演化定律
,建立了相关语言性质变化的动力模型
- 齐普夫定律(分布定律)
- 词的频次和它相对应的频序的乘积大体上接近一个常数
- 公式:$f_rr=K$
- 记 $\frac{f_r}{N}$ 为词的频率 $P_r$,则词频分布公式为:$$P_r=Kr^{-1}$$
- 对其修正:$$P_r=Cr^{-b}$$其中b>0,C>0,$\sum_{r=1}^nP_r=1$
- 两种常见的分布形态:幂律分布、泊松分布
- 门策拉-阿尔特曼定律(函数定律)
- 一种语言结构越长,则构成它的部分越短。成分长度是结构长度的函数
- 记 y 为成分长度,x 为结构长度,表示为$$y=ax^{-b}e^{-cx}$$
- 皮奥特罗夫-阿尔特曼定律(演化定律)
- 这一定律一般用来研究借词数量增加、形态变化等有关语言演化的问题。
- 其中$p_t$是新形式所占的比例,$k_t$ 表示一个时间函数(也可能是常量),C 表示变化区间,t 表示时间,$dp_t$ 表示变化率 $$dp_t=k_tp_t(C-p_t)dt$$
复杂网络
- 分析指标
- 节点相关(度、平均度、度的分布)
- 网络相关(相关性、小世界属性、中心性)
- 工具
- 复杂网络分析工具
- cytoscape
- python newworkx包
- Pajek
- 常用语言计量软件
- QUITA
- Altmann-Fitter
- NLREG & Curve Table
- 复杂网络分析工具
QUITA, Quantitative Index Text Analyzer ,可计算22种计量指标,记总词例(token)数为 N
,词型(type)数为 V
- $TTR$ - 型例比
- 最为常用的一个文本计量指标,反映词汇使用的丰富程度
- $Entropy$熵
- $RR$ 重复率
- $RR_{mc}$ 相对重复率
统计文本的计量指标
import jieba
from collections import Counter
from math import log, sqrt
with open("QiuzhuangShandian.txt", "r", encoding='ANSI') as t:
txt = t.read()
words = jieba.lcut(txt) # 使用精确模式对文本进行分词
#print(words[:100])
d = Counter(words)
other = [',', '\u3000', '。', '\n', '”', '“', ' ', '?', ':']
for i in other:
del d[i]
N = sum(d.values())
V = len(d)
H = sum([(d[r]/N)*log(d[r]/N,2) for r in d.keys()])
RR = sum([(d[r]/N)*(d[r]/N) for r in d.keys()])
RRMC = (1-sqrt(RR))/(1-1/sqrt(V))
ATL = sum([len(i) for i in d.keys()])/len(d)
tlfs = [i for i in Counter([len(i) for i in d.keys()]).items()]
tlfs.sort()
tmp_h = [x for x in zip(range(1, len(d)+1),d.most_common())]
tmp_h[:] = [(x,y[1]) for x,y in tmp_h]
#print(tmp_h)
h_point = 0
for i in range(len(tmp_h)):
if tmp_h[i][1] <= i:
h_point = i
break
R1 = 1- sum([i[1] for i in tmp_h[:h_point]])/N + (h_point*h_point)/(2*N)
G = (V+1-2*sum([r*tmp_h[r-1][1] for r in range(1, len(tmp_h)+1)])/N)/V
L = sum([sqrt((tmp_h[r][1]-tmp_h[r+1][1])**2+1) for r in range(len(tmp_h)-1)])
LR = sum([sqrt((tmp_h[r][1]-tmp_h[r+1][1])**2+1) for r in range(h_point-1)])
#print(d.most_common())
print("{:<30}{:>15}".format("Types:", V))
print("{:<30}{:>15}\n".format("Tokens:", N))
print("{:<30}{:>15}".format("(1)TTR:", V/N))
print("{:<30}{:>15}".format("(2)h-point:", h_point))
print("{:<30}{:>15}".format("(3)entropy:", H))
print("{:<30}{:>15}".format("(4)Average Token Length:", ATL))
print("{:<30}{:>15}".format("(5)R1:", R1))
print("{:<30}{:>15}".format("(6)RR:", RR))
print("{:<30}{:>15}".format("(7)RRMC:", "[no tagger]"))
print("{:<30}{:>15}".format("(8)TC:", "[no tagger]"))
print("{:<30}{:>15}".format("(9)STC:", "[no tagger]"))
print("{:<30}{:>15}".format("(10)PTC:", "[no tagger]"))
print("{:<30}{:>15}".format("(11)Activity:", "[no tagger]"))
print("{:<30}{:>15}".format("(12)Descriptivity:", "[no tagger]"))
print("{:<30}{:>15}".format("(13)Lambda:", L*log(N,10)/N))
print("{:<30}{:>15}".format("(14)Adjusted Modules:", "[...]"))
print("{:<30}{:>15}".format("(15)G:", G))
print("{:<30}{:>15}".format("(16)R4:", 1-G))
print("{:<30}{:>15}".format("(17)Hapax Percentage:", len([i for i in d.values() if i==1])/N))
print("{:<30}{:>15}".format("(18)L:", L))
print("{:<30}{:>15}".format("(19)WritersView:", "[...]"))
print("{:<30}{:>15}".format("(20)CurveLength RIndex:", 1-LR/L))
print("{:<30}{:>15}".format("(21)Verb Distances:", "[...]"))
print("{:<30}".format("(22)Token Length Frequency Spectrum:"))
print(tlfs)
结课论文
字的习得及其复杂度
假设:
一种符号笔画越多,学习它的时间就越晚。
研究步骤:
1)从汉语、日语等中取一定数量汉字。
2)统计各年级教科书中出现的汉字的频次和复杂度。笔画数量可以用来测量复杂度。
3)讨论汉字复杂度和学习的顺序之间是否具有函数关系。
4)求证复杂度的离散程度和学习顺序之间的函数关系。
5)比较不同语言的函数关系的异同
other
课程分数:
- 考勤
- 作业
- 科学的方法论
√
- python 统计语料指标
√
- 学术汇报(25min汇报+5min提问)
√
- 课程论文(4000+)
√
- 科学的方法论
- 突出表现