Handsome_zhou 发表于 2023-8-19 14:43:58

NLP语料的预处理

本帖最后由 Handsome_zhou 于 2023-8-19 14:45 编辑

中文自然语言处理(NLP)模型的语料输入通常需要经过一系列的数据预处理步骤,以确保数据的格式和内容适合模型的训练或推理。以下是处理中文NLP语料的一般步骤:

1、文本分词:

首要任务是将中文文本分词成单词或子词。中文是一个字符密集的语言,分词有助于模型理解文本的结构。常见的分词工具包括jieba、pkuseg、HanLP等。

2、标记化:

分词后,将每个词汇映射到其对应的标记(token)。这些标记通常是词汇表中的索引或特殊标记(如和,用于BERT等模型)。

3、填充和截断:

由于模型输入通常是固定长度的,需要对文本进行填充或截断,以确保它们具有相同的长度。这通常使用特殊的填充标记(如)或截断文本的方式来完成。

4、创建注意力掩码:

对于BERT等模型,需要创建一个注意力掩码,以指示哪些标记是真实的文本标记,哪些是填充标记。这有助于模型在训练时忽略填充部分。

5、生成批次:

将文本示例组成批次(batch),以便一次性输入多个示例,以提高训练或推理效率。

6、嵌入层:

将标记转化为向量形式。这可以使用预训练的词嵌入(如Word2Vec、GloVe)或预训练的语言模型嵌入(如BERT、GPT)。


代码示例:

import torch
from transformers import BertTokenizer

# 初始化分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')

# 输入文本
text = "我喜欢自然语言处理"

# 分词、标记化、转化为张量
tokens = tokenizer.tokenize(text)
input_ids = tokenizer.convert_tokens_to_ids(tokens)

# 填充和截断
max_length = 128
if len(input_ids) < max_length:
    input_ids += * (max_length - len(input_ids))
else:
    input_ids = input_ids[:max_length]

# 创建注意力掩码
attention_mask = * len(input_ids)

# 转化为张量
input_ids = torch.tensor(input_ids)
attention_mask = torch.tensor(attention_mask)

# 将数据加载到GPU(如果可用)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
input_ids = input_ids.to(device)
attention_mask = attention_mask.to(device)

页: [1]
查看完整版本: NLP语料的预处理