P3 注释

发布时间 2024-01-02 11:17:59作者: 静听微风tom

建模会用到的符号

举个例子:

下面的句子作为序列模型的输入数据

x: Harry Potter and Hermione Granger invented a new spell

假设你想让模型识别出句子中哪些单词是人名,那么这就是一个名字识别的例子,常被用在搜索引擎中(比如对过去24小时新闻中提到的人名进行适当的索引)、识别系统中(人名,企业名称,时间,地点,国家名称,货币名称等等)

假设你想让输出数据y一 一对应x里面的每个单词输出0/1来判断单词是或否人名

y:   1          1       0    1                  1            0             0    0      0

当然这不是最好的算法,有些算法可以告诉你哪些是人名,还能告诉你人名在句子中的起始位置

我们用x<1> x<2>  x<3>  x<4> x<5> x<6> x<7> x<8> x<9>表示句子中的单词所在的位置

我们索引x中单词的时候我们用x^<t>来索引

y也是这样表示输出的元素在y中的位置

Tx=9,表示输入数据的长度,当然这里Ty=9,表示的就是输出数据的长度

x(i)表示第i个训练样例

在这个样例1,Tx(1)表示样例1的输出数据的长度

NLP#自然语言处理(Natural Language Processing)

我们需要决定如何在一个序列中表示一个单词,比如说Harry这个词,x<1>的值应该是什么呢???

首先我们要有一个词汇表,或者说字典

[a,air,aron,and,..........,Harry, ...........,Potter........zuzu,Zulu]#就类似于这种东西的一个list

那么在这个词典里面假设,我们这个and的位置索引是367,Harry这个词的索引是4075,Potter是6830,Zulu这个词的索引是10000,那么在这个例子里我用的是词汇量为10000的字典

对于一般的商业级应用,常用的字典规模在3-5万,10万也比较常见

如果你想建立你的字典,一种方法是找到你的训练集中出现次数最频繁的10000个单词,第二种方法是查找一些网上的字典

我们可以把字典看成一个10000行1列的矩阵,然后我们每一个单词都可以用在它索引位置是1,其他位置都是0 的一个1x10000的向量#这种向量我们叫one-hot

那么有一个问题,如果遇到了不在字典里的单词怎么办???

创建一个新的标记或者说创造一个fake word,称为Unknown Word并使用<UNK>表示这些不在词汇表中的词

 

下一章会讲循环神经网络(Recurrent Neural Networks)构建从x到y的映射