Pytorch 官方文档学习(一)

使用字符级特征来增强 LSTM 词性标注器

教程给出的模型只使用词向量作为序列模型的输入,相当于只考虑词级别的特征,而像词缀这样的字符级信息对于词性有很大的影响。比如说, 像包含词缀 -ly 的单词基本上都是被标注为副词。因此,接下来我们会在刚刚代码的基础上考虑加入每个的单词的字符级别的特征来增强词嵌入。
教程中给出的思路为:

新模型中需要两个 LSTM, 一个跟之前一样, 用来输出词性标注的得分, 另外一个新增加的用来获取每个单词的字符级别表达;
为了在字符级别上运行序列模型,你需要用嵌入的字符来作为字符 LSTM 的输入。

基本思想是将一个单词拆分为字符,然后得到字符向量,将字符向量输入到一个LSTM 网络中得到最后一个隐层的输出,然后将这个输出和对应的单词的词向量结合起来,得到一个单词的新的表示向量,从而进一步得到整个句子的向量,然后再输入到下一个LSTM中就得到了整个的句子的单词的词性预测结果。

代码部分

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

EMBEDDING_DIM = 6
HIDDEN_DIM = 6
CHAR_EMBEDDING_DIM = 6
CHAR_HIDDEN_DIM = 3

training_data = [
    ("The dog ate the apple".split(), ["DET", "NN", "V", "DET", "NN"]),
    ("Everybody	read that book".split(), ["NN", "V", "DET", "NN"])
]
tag_to_idx = {
   'DET': 0, 'NN': 1, 'V': 2}

# 字符的idx
character_to_idx = {
   }
for sent, tags in training_data:
    for word in sent:
        for char in word:
            if char not in character_to_idx:
                character_to_idx[char] = len(character_to_idx)
print(character_to_idx)

# 单词的idx
word_to_idx = {
   }
for sent, tags in training_data:
    for word in sent
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值