Word里面如何在两个字正中间加入点

写论文时在作者栏有时需要在两个名字中间加入点,自己琢磨了一下,可以通过以下流程实现:

1)在Word中点击“插入”——“符号”——“其他符号”
在这里插入图片描述

2)在符号列表中下拉,找到所需要的点状符号(大致位置在后面,注意是正中间点)。
在这里插入图片描述
3)结果
在这里插入图片描述

### Word2Vec 的两种模型 CBOW 和 Skip-gram #### 连续词袋模型 (Continuous Bag of Words, CBOW) CBOW 模型的核心在于利用上下文中的多个单词来预测中心单词。具体来说,给定一段文本序列以及设定好的上下文窗口大小 \( c \),该模型会尝试基于位于目标词两侧各 \( c \) 个位置上的词语去猜测中间的那个特定词汇是什么[^4]。 对于每一个时间步 t 而言,如果定义上下文范围是从 \( w_{t-c} \) 到 \( w_{t+c} \)(不包括\(w_t\)本身),那么 CBOW 就是要解决这样一个问题:当已知这些周边词汇时,如何最有可能地推断出处于它们正中央的位置应当填入哪个具体的/词?为了完成这项任务,通常的做法是先将各个输入项转换成独热表示形式(one-hot encoding)[^5],再经过一系列线性变换与非线性激活之后得到最终的概率分布向量作为输出结果。 ```python import torch.nn as nn class CBOW(nn.Module): def __init__(self, vocab_size, embedding_dim, context_size): super(CBOW, self).__init__() self.embeddings = nn.Embedding(vocab_size, embedding_dim) self.linear1 = nn.Linear(embedding_dim * context_size * 2, 128) self.activation_function = nn.ReLU() self.linear2 = nn.Linear(128, vocab_size) def forward(self, inputs): embeds = self.embeddings(inputs).view((1, -1)) out = self.linear1(embeds) out = self.activation_function(out) out = self.linear2(out) log_probs = F.log_softmax(out, dim=1) return log_probs ``` 此段代码展示了怎样创建一个简单的 PyTorch 版本的 CBOW 实现方案。注意这里的 `context_size` 参数决定了我们考虑多少个前后的邻近词用于辅助预测工作。 #### Skip-Gram 模型 相比之下,Skip-gram 方法则采取了一种相反的角度来看待同样的事情——不是由周围的词推测核心词,而是反过来,即已经知道了某个固定的焦词汇后试图估计其附近可能出现哪些其他的关联术语[^1]。换句话说,在 skip-gram 架构下,我们的目的是学习到一种映射机制,使得任意选定的一个单词能够被用来有效地预估在其前后一定距离内的其他成员身份。 从技术层面上讲,这意味着每次迭代过程中都会固定住一个“中心”节并遍历整个数据集寻找符合条件的对象加入训练样本集合;与此同时还要确保负采样策略得以恰当应用以便提高效率的同时保持良好的泛化性能。由于这种方法允许更广泛地探索不同模式之间的潜在联系,因此往往被认为更适合捕捉那些较为少见但却极具意义的语言现象[^3]。 ```python class SkipGram(nn.Module): def __init__(self, vocab_size, embedding_dim): super(SkipGram, self).__init__() self.u_embeddings = nn.Embedding(vocab_size, embedding_dim, sparse=True) self.v_embeddings = nn.Embedding(vocab_size, embedding_dim, sparse=True) def forward(self, pos_u, pos_v, neg_v): emb_u = self.u_embeddings(pos_u) emb_v = self.v_embeddings(pos_v) score = torch.mul(emb_u, emb_v).squeeze() score = torch.sum(score, dim=1) score = F.logsigmoid(score) neg_emb_v = self.v_embeddings(neg_v) neg_score = torch.bmm(neg_emb_v, emb_u.unsqueeze(2)).squeeze() neg_score = F.logsigmoid(-1 * neg_score) loss = -1 * (torch.sum(score) + torch.sum(neg_score)) return loss def save_embedding(self, id2word, file_name, use_cuda): if use_cuda: embedding = self.u_embeddings.weight.cpu().data.numpy() else: embedding = self.u_embeddings.weight.data.numpy() fout = open(file_name, 'w') fout.write('%d %d\n' % (len(id2word), EMBEDDING_DIM)) for wid, w in id2word.items(): e = embedding[wid] e = ' '.join(map(lambda x: str(x), e)) fout.write('%s %s\n' % (w, e)) ``` 上述 Python 函数提供了一个基础版的 Skip-gram 网络框架设计思路,其中包括了正面配对(positive pairs)和负面实例(negative samples)两部分损失计算逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值