五、文本特征处理与文本数据增强

文本特征的作用:

  • 文本特征处理可以为语料添加具有普适性的文本特征,如:n-gram特征
  • 文本特征处理对加入特征后的语料进行长度规范处理,保持语料长度的一致性

这些特征处理工作能够有效的将重要的文本特征加入到模型训练中,增强模型评估指标。

常见的文本特征处理方法,有:

  • 添加n-gram特征
  • 文本长度规范

文本数据增强的方法:

  • 回译数据增强法

一、n-gram特征

n-gram特征是指,给定一段文本序列,其中n个词或字的相邻共线特征,即n-gram特征,常用的n-gram特征是bi-gramtri-gram,分别对应n为2和3.

n-gram特征的详细理解,可以阅读《N-gram概率语言模型,你知道多少?》这篇博客

# 一般n-gram特征中的n取2或3,这里取2
n_gram_range = 2


def create_ngram_set(input_list):
    """从列表input_list中获取所有的n-gram特征

    Args:
        input_list (list): 输入的数值列表,可以看作是词汇映射后的列表

    Returns:
        set: n-gram特征组成的集合
    """
    #
    ngram_set = set(zip(*[input_list[i:] for i in range(n_gram_range)]))

    return ngram_set


input_list = [1, 4, 9, 4, 1, 4]
print(create_ngram_set(input_list))

输出:{(4, 9), (4, 1), (1, 4), (9, 4)}

二、文本长度规范

文本长度规范的作用:一般模型的输入需要相同尺寸大小的矩阵,因此,在进入模型前,需要对每条文本数值映射后的长度进行规范,此时,将根据句子长度分布,分析出覆盖绝大多数文本的合理长度,对超长文本进行截断,对不足文本进行补齐(一般使用数字0),这个过程就是文本长度规范。

from keras.preprocessing import sequence

# cutlen根据数据分析中句子的长度分布,覆盖90%左右语料的最短长度
def padding(sen):
    return sequence.pad_sequences(sen, cutlen)

cutlen = 10  # 假定cutlen为10,即所有的数据语料都规范到10的长度

data = [[1, 23, 4, 3, 5, 2, 3, 1, 4, 56, 34, 12, 434, 21, 12, 45, 45],
        [1, 1, 2, 3, 4]]
print(padding(data))

输出:

[[1, 4, 56, 34, 12, 434, 21, 12, 45, 45],
[0, 0, 0, 0, 0, 1, 1, 2, 3, 4]]

文本在输入模型的时候,不可能有长有短,必须要统一长度,这样才更容易进行统一的处理,这就是文本长度规范的意义。

三、回译数据增强法

回译数据增强法目前是文本数据增强方面效果较好的增强方法,一般基于Google翻译接口,将文本数据翻译成另一种语言(一般选择小语种),之后再翻译回原语言,即可认为得到与原语料同标签的新语料,新语料加入到原数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

并不傻的狍子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值