开始接触一点 NLP,一边看 2017 年的 CS224n课程,因为里面的作业似乎是要求用 tensorflow,而 2019 年新的课程是用 pytorch。从 IMDB 数据集开始试试,简单的解析了之后可以看到评论的内容和正负两种评价标签,然后就要对词向量做一个词嵌入(Embedding)的处理,因为网络结构不是用 ANN 而是用循环神经网络 RNN 来做,所以不可以用稀疏向量(Sparse vector)而是要转化成稠密向量(Dense vector)。
然后原始数据有一些操作,实际上都封装在了这个 load_data 函数,结果就是返回处理好的 train_data,train_labels,test_data,test_labels。所以看一些内置的方法是做了什么处理,也可以启发我们自己在处理时的做法。
def load_data(path='imdb.npz',
num_words=None,
skip_top=0,
maxlen=None,
seed=113,
start_char=1,
oov_char=2,
index_from=3,
**kwargs):
首先是函数定义,有一些参数及默认值的设定。
if 'nb_words' in kwargs:
logging.warning('The `nb_words` argument in `load_data` '
'has been renamed `num_words`.')
num_words = kwargs.pop('nb_words')
if kwargs:
raise TypeError('Unrecognized keyword arguments: ' + str(kwargs))
如果在传参时还传入了 nb_words,首先提出一个警告,说现在的版本中已经不用这个名字了,然后就把 nb_words 的数值从字典中 pop 出来赋给 num_words,也就是现在版本使用的参数名称。另外,在排除了 nb_words 的存在之后如果字典非空,那么肯定传了多余的没意义的参数,就丢出一个错误。
path = get_file(
path,
origin='https://s3.amazo