-
文本处理
建立模型需要用到大量的数据,根据要求首先需要先对数据格式先进行处理,Python提供了许多的简便操作供使用,比如去空格,去符号,大小写切换等,根据学习资料了解到,处理数据时自己调用函数处理可能会出现一些没有注意到的问题,如学习资料里提到的,它至少有以下几个缺点:
标点符号通常可以提供语义信息,但是我们的方法直接将其丢弃了 类似“shouldn’t", “doesn’t"这样的词会被错误地处理 类似"Mr.”, "Dr."这样的词会被错误地处理。通过调用专业的包,处理数据就会变得很容易且合理,工具有spaCy和NLTK。 -
一段自然语言文本可以看作是一个离散时间序列,给定一个长度为 T 的词的序列 w1,w2,…,wT,语言模型的目标就是评估该序列是否合理,即计算该序列的概率: P(w1,w2,…,wT).
-
建立语言模型即对文件建立数据库,文本在这个数据库中出现的概率可以认为是P^(w1)=n(w1)/n,其中n(w1)是以w1开头的文本的数量,n为数据库中文本的总量,序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。 n 元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面 n 个词相关,即 n 阶马尔可夫链(Markov chain of order n ),如果 n=1 ,那么有P(w3∣w1,w2)=P(w3∣w2) 。基于 n−1 阶马尔可夫链,我们可以将语言模型改写为P(w1,w2,…,wT)=∏t=1TP(wt∣wt−(n−1),…,wt−1).当 n 较小时, n 元语法往往并不准确。例如,在一元语法中,由三个词组成的句子“你走先”和“你先走”的概率是一样的。然而,当 n 较大时, n 元语法需要计算并存储大量的词频和多词相邻频率。
学习语言模型
最新推荐文章于 2024-05-29 08:20:54 发布