NLP文本预处理-文本张量表示

 1.One-Hot 编码

# 导入用于对象保存和加载的包
from sklearn.externals import joblib
# 导入keras中的词汇映射器Tokenizer
from keras.preprocessing.text import Tokenizer

# 初始化一个词汇表
vocab = {"周杰伦", "陈奕迅", "王力宏", "李宗盛", "吴亦凡", "鹿晗"}

# 实例化一个词汇映射器
t = Tokenizer(num_words=None, char_level=False)

# 在映射器上拟合现有的词汇表
t.fit_on_texts(vocab)

# 循环遍历词汇表, 将每一个单词映射为one-hot张量表示
for token in vocab:
    # 初始化一个全零向量
    zero_list = [0] * len(vocab)
    # 使用映射器转化文本数据, 每个词汇对应从1开始
    token_index = t.texts_to_sequences([token])[0][0] - 1
    # 将对应的位置赋值为1
    zero_list[token_index] = 1
    print(token, "的one-hot编码为:", zero_list)

# 将拟合好的词汇映射器保存起来
tokenizer_path = "./Tokenizer"
joblib.dump(t, tokenizer_path)

 

 

 使用one-hot

# 导入用于对象保存于加载的包
from sklearn.externals import joblib
# 将之前已经训练好的词汇映射器加载进来
t = joblib.load("./Tokenizer")

token = "李宗盛"
# 从词汇映射器中得到李宗盛的index
token_index = t.texts_to_sequences([token])[0][0] - 1
# 初始化一个全零的向量
zero_list = [0] * 6
zero_list[token_index] = 1
print(token, "的one-hot编码为:", zero_list)

2.word2vec:

 

 

 

 

 

 word embedding

 

# 导入torch和tensorboard导入进来
import torch
import json
import fileinput
from torch.utils.tensorboard import SummaryWriter

# 实例化一个写入对象
writer = SummaryWriter()

# 随机初始化一个100*5的矩阵, 将其视作已经得到的词嵌入矩阵
embedded = torch.randn(100, 50)

# 导入事先准备好的100个中文词汇文件, 形成meta列表原始词汇
meta = list(map(lambda x: x.strip(), fileinput.FileInput("./vocab100.csv")))
writer.add_embedding(embedded, metadata=meta)
writer.close()

tensorbord可视化embedding 结果

 

### 文本张量表示的概念 文本张量表示自然语言处理领域中的一个重要技术,它涉及将文本转换为计算机可以理解和操作的形式。具体来说,文本张量表示通常指的是将单词、短语或句子转化为数值形式的过程,这些数值可以通过机器学习算法进一步分析。 #### 词向量的定义与作用 一种常见的词向量表示方法是将词语映射到高维空间中的向量[^2]。这种方法使得词语之间的相似性和关系能够被量化表达。例如,在某些情况下,两个含义相近的词可能会有接近的向量表示。 #### Word Embedding 的广义与狭义解释 广义上的 word embedding 包括所有密集型词汇向量的表现方式,比如著名的 word2vec 技术就属于这一范畴。而狭义上,则特指在神经网络架构里增加的一个专门用于生成词汇向量的 embedding 层。此层通过训练得到其内部参数构成的矩阵即为我们所需的 embedding 矩阵[^3]。 ### 实现方法概述 对于基于深度学习框架下的文本张量表示实现而言,主要依赖于构建并调整特定类型的神经网络结构来进行自动化的特征提取工作: 1. **Word2Vec**: 这是一个利用浅层神经网络模型来获取高质量低纬度表征的技术方案之一。其中又细分为连续词袋(CBOW) 和 Skip-Gram 两种不同的建模策略。 - **CBOW (Continuous Bag Of Words)**: 此种模式下,目标是从上下文中预测中心词;换句话说,给定周围几个相邻位置处出现过的其他词汇序列作为输入条件去估计当前待测样本最有可能是什么样的字串实例。 - **Skip-gram**: 反过来讲,如果已知某个单独存在的个体单元——也就是我们的核心考察对象本身的话,那么就可以尝试着推测出哪些其他的关联项会频繁伴随出现在它的附近区域范围内形成组合搭配现象。 2. **Embedding Layer in Neural Networks**: 当采用更复杂的深层结构如循环单元RNN或者变换器Transformer时,往往会在整体设计之初便引入一层额外定制好的embeddings组件负责初始化阶段内的原始素材编码任务完成之后再交给后续环节继续深入挖掘潜在规律特性等内容信息加以充分利用起来达到最终目的效果最佳状态为止. ```python import tensorflow as tf vocab_size = 10000 # 字典大小 embedding_dim = 16 # 嵌入维度 model = tf.keras.Sequential([ tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embedding_dim), ... ]) ``` 上述代码片段展示了如何使用 TensorFlow 构造一个简单的包含嵌入层的顺序模型。这里 `tf.keras.layers.Embedding` 被用来创建所需尺寸规格恰当合理的 embeddings 表达样式供接下来各层次间相互配合协作共同运作下去直至结束全部流程步骤完毕为止. ### 结论 综上所述,无论是传统意义上的 word2vec 方法还是现代化依托强大计算能力支持下的各种先进算法体系均能有效解决实际应用场景当中遇到的各种难题挑战从而推动整个人工智能行业向前发展迈进一大步距离之外还极大地促进了跨学科交叉融合创新成果不断涌现出来造福社会大众群体日常生活方方面面都得到了显著改善提升等诸多好处优势所在之处显而易见不容忽视轻视对待任何一方面内容细节部分都应该引起足够的重视程度才行啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值