循环序列模型 —— 1.2 数学符号

假如你想要建立一个序列模型,它的输入语句是这样的,x:Harry Potter and Hermione Granger invented a new spell.

假如你想要建立一个能够自动识别句中人名位置的序列模型,那么这就是一个命名实体识别问题,这常用于搜索引擎。比如说,索引过去24小时内所有新闻报道提及的人名,用这种方式就能够恰当地进行索引。

命名实体识别系统可以用来查找不同类型的文本中人名、公司名、时间、地点、国家名、货币名等等。

现在给定这样的输入数据x,假设你想要一个序列模型输出y,使得输入的每个单词都对应一个输出值,同时这个y能够表明输入的单词是否是人名的一部分。

技术上说这也许不是最好的输出形式,还有更加复杂的输出形式,它不仅能够表明输入词是否是人名的一部分,它还能告诉你这个人名在这个句子里从哪里开始到哪里结束。

对于这个例子,吴恩达先生会讲解更简单的输出形式(如11011…000)。这个输入数据是9个单词组成的序列,所以最终我们会有9个特征集合来表示这9个单词,并按序列中的位置进行索引。这里用 X < 1 > X^{<1>} X<1> X < 2 > X^{<2>} X<2> X < 3 > X^{<3>} X<3>一直到 X < 9 > X^{<9>} X<9>来索引不同的位置,我们将用 X < t > X^{<t>} X<t>来索引这个序列的中间位置,t意味着他们是时序序列。但不论是否是时序序列,都将用t来索引序列中的位置。输出数据也是一样,用用 Y < 1 > Y^{<1>} Y<1> Y < 2 > Y^{<2>} Y<2> Y < 3 > Y^{<3>} Y<3>一直到 Y < 9 > Y^{<9>} Y<9>来表示输出数据,同时我们用 T x T_x Tx来表示输入序列的长度,这个句子中输入是9个单词,所以 T x T_x Tx就等于9,我们用 T y T_y Ty来表示输出序列的长度,在这个例子中 T x T_x Tx等于 T y T_y Ty

之前我们用 X ( i ) X^{(i)} X(i)来表示第i个训练样本,所以为了指代第t个元素,或者说是训练样本 i i i的序列中第 t t t个元素,我们用符号 X ( i ) < t > X^{(i)<t>} X(i)<t>来表示,如果 T x T_x Tx是序列的长度,那么训练集里不同的训练样本就会有不同的长度,所以 T x ( i ) T_x^{(i)} Tx(i)就表示第 i i i个训练样本的输入序列长度。同样, y ( i ) < t > y^{(i)<t>} y(i)<t>代表第i个训练样本中第t个元素, T y ( i ) T_y^{(i)} Ty(i)就是第 i i i个训练样本的输出序列的长度。

所以在这个例子中, T x ( i ) = 9 T_x^{(i)}=9 Tx(i)=9,但如果另一个样本是由15个单词组成的句子,那么对于这个训练样本,它的 T x ( i ) = 15 T_x^{(i)}=15 Tx(i)=15

既然我们这个例子是NLP也就是自然语言处理,这是我们初次涉足自然语言处理,一件我们需要事先决定的事是怎么表示一个序列里单独的单词,你会怎么表示像Harry这样的单词, X 1 X_1 X1实际应该是什么?

接下来我们讨论一下怎么表示一个句子里单个的词。要想表示一个句子里的单词第一件事是做一张词表,有时也称为词典。意思是列一列你的表示方法中要用到的单词。这个词表中的第一个词是 a a a,也就是说词典中的第一个单词时 a a a,第二个单词时 a a r o n aaron aaron,然后更下面一些是单词 a n d and and,再后面你会找到 h a r r y harry harry,然后找到 P o t t e r Potter Potter,这样一直到最后,词典里最后一个单词可能是 z u l u zulu zulu

因此a是第一个单词,aaron是第二个单词,在这个词典里and出现在第367这个位置上,Harry是在4075这个位置,potter是在6830,词典里的最后一个单词是zulu,可能是第10000个单词。所以这个例子中,用了10000个单词大小的词典,这对于现代自然语言处理应用来说太小了。对于商业应用来说,对于一般规模的商业应用来说。30000到50000词大小的词典比较常见,但是100000词的也不是没有,而且有些大型互联网公司会用百万词,甚至更大的词典。许多商业应用用的词典可能是30000词也可能是50000词。这里用10000词大小的词典做说明,因为这是一个好用的整数。

如果你选定了10000词的词典,构建这个词典的一个方法是遍历你的训练集,并且找到前10000个常用词。你也可以浏览一些网络词典,它能告诉你英语里最常用的10000个单词。

接下来你可以用one-hot表示法来表示词典里的每个单词,举个例子, x < 1 > x^{<1>} x<1>表示Harry这个单词,它是一个第4075行是1,其余值都是0的向量,因为4075是Harry在这个词典里的位置。如果你的词典大小是10000的话,那么每个向量都是10000维的。

所以这种表示方法中, x < t > x^{<t>} x<t>指代句子里的任意词,它就是一个one-hot变量,说它是one-hot是因为这个向量中只有一个值是1,其余值都是0。所以我们会有9个one-hot向量来表示这个句子中的9个单词,目的是用这样的表示方法表示X,用序列模型在X和目标输出Y之间学习建立一个映射,这里会把它当做监督学习的问题。

还剩最后一件事,如果你遇到了一个不在你词表中的词,那么创建一个新的标记,也就是一个叫做unknown word的伪造单词,用这个单词作为标记来表示不在词表中的单词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值