鱼C论坛

 找回密码
 立即注册
查看: 1967|回复: 0

[学习笔记] NLP语料的预处理

[复制链接]
发表于 2023-8-19 14:43:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

1、文本分词:

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

2、标记化:

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

3、填充和截断:

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

4、创建注意力掩码:

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

5、生成批次:

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

6、嵌入层:

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


代码示例:

  1. import torch
  2. from transformers import BertTokenizer

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

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

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

  10. # 填充和截断
  11. max_length = 128
  12. if len(input_ids) < max_length:
  13.     input_ids += [tokenizer.pad_token_id] * (max_length - len(input_ids))
  14. else:
  15.     input_ids = input_ids[:max_length]

  16. # 创建注意力掩码
  17. attention_mask = [1] * len(input_ids)

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

  21. # 将数据加载到GPU(如果可用)
  22. device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  23. input_ids = input_ids.to(device)
  24. attention_mask = attention_mask.to(device)
复制代码


评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
isdkz + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 05:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表