开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
一.preprocess(data)
相当于数据预处理的一步
punct = "/-'?!.,#$%\'()*+-/:;<=>@[\\]^_{|}~" + '""“”’' + '∞θ÷α•à−β∅³π‘₹´°£€\×™√²—–&'
把punct这些符号全部转换成' '(即空格)
这个方法值得学习,将python代码贴下:
def preprocess(data):
'''
Credit goes to https://www.kaggle.com/gpreda/jigsaw-fast-compact-solution
'''
punct = "/-'?!.,#$%\'()*+-/:;<=>@[\\]^_`{|}~`" + '""“”’' + '∞θ÷α•à−β∅³π‘₹´°£€\×™√²—–&'
def clean_special_chars(text, punct):
for p in punct:
text = text.replace(p, ' ')
return text
data = data.astype(str).apply(lambda x: clean_special_chars(x, punct))
return data
二.Preprocessing
在这里直接对标签做了处理,如果>=0.5,则做1处理,否则为0
三.tokenizer
分词器,就是将句子分成一个个小的词块(token),生成一个词表,并通过模型学习到更好的表示。
预备知识
首先需要对数据进行预处理,将数据从字符串转换为神经网络可以接受的格式,一般会分为如下几步:
-
(1)分词:使用分词器对文本数据进行分词(字、字词);
-
(2)构建词典:根据数据集分词的结果,构建词典映射(这一步并不绝对,如果采用预训练词向量,词典映射要根据词向量文件进行处理);
-
(3)数据转换:根据构建好的词典,将分词处理后的数据做映射,将文本序列转换为数字序列;
-
(4)数据填充与截断:在以batch输入到模型的方式中,需要对过短的数据进行填充,过长的数据进行截断,保证数据长度符合模型能接受的范围,同时batch内的数据维度大小一致。
然后利用Tokenizer模块便可以快速的实现上述全部工作,它的功能就是将文本转换为神经网络可以处理的数据。
**1.tokenizer.fit_on_texts(text) ** text可以是字符串列表,字符串生成器(以提高内存效率)或字符串的列表的列表。
2.tokenizer.texts_to_sequences(x_train) 字符串列表分割成单切片
3.axis 常常用在numpy和tensorflow中用到,作为对矩阵(张量)进行操作时需要指定的重要参数之一。设定axis=-1,0,1...,用来指定执行操作的数据如何划分。在python中axis=-1的时候意味着最后一个维度
4.concatenate() 可以拼接多个矩阵,参数axis=0(default)表示竖直方向向下拼接, axis=1表示水平方向向右依次拼接。
5.shape shape返回的是数组的形状,是一个tuple格式的数据。