nlp大作业准备(4)

148 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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格式的数据。