一分钟搞懂embedding

在一片嘈杂的大厅中,一位官员镇静下来,回忆起贪官赵德汉被捕的情景。赵德汉外表憨厚,却难逃法网。此场景让人深思权力与腐败的关系。

文本样例

大厅里仍是一片嘈杂。他强迫自己镇静,在饮水机前喝了几口水,找了一处空椅子坐下,闭目养神。已经落网的赵德汉的形象适时浮现在眼前,他禁不住又沉浸到了对赵德汉的回忆中。昨天晚上,当此人捧着大海碗吃炸酱面时,老旧的木门“吱呀”一声开了,他代表命运来敲这位贪官的家门了。贪官一脸憨厚相,乍看上去,不太像机关干部,倒像个刚下田回家的老农民。

总共155个字,除空格和换行符外

统计词典

{‘大’: 2, ‘厅’: 1, ‘里’: 1, ‘仍’: 1, ‘是’: 1, ‘一’: 4, ‘片’: 1, ‘嘈’: 1, ‘杂’: 1, ‘。’: 5, ‘他’: 3, ‘强’: 1, ‘迫’: 1, ‘自’: 1, ‘己’: 1, ‘镇’: 1, ‘静’: 1, ‘,’: 10, ‘在’: 2, ‘饮’: 1, ‘水’: 2, ‘机’: 2, ‘前’: 2, ‘喝’: 1, ‘了’: 5, ‘几’: 1, ‘口’: 1, ‘找’: 1, ‘处’: 1, ‘空’: 1, ‘椅’: 1, ‘子’: 1, ‘坐’: 1, ‘下’: 2, ‘闭’: 1, ‘目’: 1, ‘养’: 1, ‘神’: 1, ‘已’: 1, ‘经’: 1, ‘落’: 1, ‘网’: 1, ‘的’: 6, ‘赵’: 2, ‘德’: 2, ‘汉’: 2, ‘形’: 1, ‘象’: 1, ‘适’: 1, ‘时’: 2, ‘浮’: 1, ‘现’: 1, ‘眼’: 1, ‘禁’: 1, ‘不’: 2, ‘住’: 1, ‘又’: 1, ‘沉’: 1, ‘浸’: 1, ‘到’: 1, ‘对’: 1, ‘回’: 2, ‘忆’: 1, ‘中’: 1, ‘昨’: 1, ‘天’: 1, ‘晚’: 1, ‘上’: 2, ‘当’: 1, ‘此’: 1, ‘人’: 1, ‘捧’: 1, ‘着’: 1, ‘海’: 1, ‘碗’: 1, ‘吃’: 1, ‘炸’: 1, ‘酱’: 1, ‘面’: 1, ‘老’: 2, ‘旧’: 1, ‘木’: 1, ‘门’: 2, ‘“’: 1, ‘吱’: 1, ‘呀’: 1, ‘”’: 1, ‘声’: 1, ‘开’: 1, ‘代’: 1, ‘表’: 1, ‘命’: 1, ‘运’: 1, ‘来’: 1, ‘敲’: 1, ‘这’: 1, ‘位’: 1, ‘贪’: 2, ‘官’: 2, ‘家’: 2, ‘脸’: 1, ‘憨’: 1, ‘厚’: 1, ‘相’: 1, ‘乍’: 1, ‘看’: 1, ‘去’: 1, ‘太’: 1, ‘像’: 2, ‘关’: 1, ‘干’: 1, ‘部’: 1, ‘倒’: 1, ‘个’: 1, ‘刚’: 1, ‘田’: 1, ‘农’: 1, ‘民’: 1}

总共118个字符

哑变量

根据统计词典,每一个字用哑变量编码成[1x118]向量,比如‘大’,转成[1,0,0,…,0];
上面总共155个字编码成[155x118]矩阵。
这个矩阵太过稀疏了,于是我们目标是用比118小的纬度表示这字典中118个中的每一个字符。不过我们还是需要哑变量,并且对它降维

哑变量降维

公式如下:
[1x118]向量 x [118,K]矩阵 =[1 x K]向量

这里K<118开发者自定义,[118,K]矩阵每行不一样,随机生成或自定义。
换句话说,[118,K]矩阵中,某一行K个数字,代替对应的 118个数字的稀疏向量。进而代表这个字符。

最后上面文本表示为[155,K]的矩阵

keras

keras.layers.Embedding(118,20) #118字典长度Size of the vocabulary,20表示矩阵列

tensorflow

tf.nn.embedding_lookup(embedding,feature_batch)
 #embedding,是矩阵自定义,feature_batch,字典对应序列号向量,会自动转换

embedding应用参考:https://www.jianshu.com/p/e8986d0ff4ff

### 关于Embedding的概念及其图解教程 #### Embedding定义与作用 Embedding是一种将离散变量转换成连续向量表示的方法。通过这种方式,能够捕捉到数据之间的语义关系,在自然语言处理等领域尤为重要[^1]。 #### 工作原理 在实际应用中,比如词嵌入(Word Embeddings),每个单词都被映射到了一个多维空间中的一个点上。这些维度代表了不同特征,使得相似意义的词语在这个几何空间里彼此靠近。这种表征形式不仅保留了原始信息还增强了模型对于上下文的理解能力[^2]。 #### 图形化展示 为了更直观地理解这一过程,下面给出了一张简单的二维平面上三个词汇:“猫”, “狗” 和 “房子”的可视化例子: ![embedding](https://miro.medium.com/max/700/1*GjKZzXwvL9QrYVJfUHgRkA.png) 在这幅图中,“猫”和“狗”因为都属于动物类别所以位置较近;而“房子”则远离它们两个,因为它代表着完全不同类型的实体对象。这样的分布反映了现实中事物间的关联程度,并有助于提高下游任务如分类、聚类的效果[^3]。 ```python import numpy as np from sklearn.manifold import TSNE import matplotlib.pyplot as plt # 假设有预训练好的词向量矩阵word_vectors (N, D),其中N是词汇大小,D是维度数 tsne = TSNE(n_components=2) embeds_2d = tsne.fit_transform(word_vectors) plt.figure(figsize=(10, 10)) for i in range(len(embeds_2d)): plt.scatter(embeds_2d[i][0], embeds_2d[i][1]) plt.annotate(words_list[i], xy=(embeds_2d[i][0], embeds_2d[i][1]), xytext=(5, 2), textcoords='offset points', ha='right', va='bottom') plt.show() ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值