首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用TorchText进行语言翻译(PyTorch)

使用TorchText进行语言翻译(PyTorch)
EN

Stack Overflow用户
提问于 2020-01-01 12:24:48
回答 1查看 350关注 0票数 2

我最近开始使用PyTorch的ML/DL。下面的pytorch示例解释了如何训练一个简单的模型来将德语翻译成英语。

https://pytorch.org/tutorials/beginner/torchtext_translation_tutorial.html

然而,我对如何使用该模型在自定义输入上运行推理感到困惑。据我目前所知:

1)我们需要使用torch.save()保存德语(输入)和英语(输出)的"vocab“,以便以后可以用来运行预测。

2)在对德语段落运行推理时,我们首先需要使用德语词汇文件将德语文本转换为张量。

3)上述张量将传递给模型的正向方法进行翻译

4)模型将再次返回目标语言的张量,即当前示例中的英语。

5)我们将使用第一步中保存的英语单词将该张量转换回英语文本。

问题:

1)如果上述理解是正确的,如果我们知道源语言和目标语言并具有相同的词汇文件,那么上述步骤是否可以作为在任何语言翻译模型上运行推理的通用方法?或者我们可以使用像spacy这样的第三方库提供的词汇?

2)如何将模型返回的输出张量转换回目标语言?我找不到任何关于如何做到这一点的例子。上面的博客解释了如何使用源语言词汇将输入文本转换为张量。

我可以很容易地找到图像/视觉模型的各种示例和详细解释,但对文本的解释不多。

EN

回答 1

Stack Overflow用户

发布于 2020-01-01 17:47:38

是的,在全球范围内,你所说的都是正确的,当然你可以使用任何词汇,例如spacy提供的词汇。要将张量转换为自然文本,最常用的技术之一是同时保留一个将索引映射到单词的字典和另一个将单词映射到索引的字典,下面的代码可以做到这一点:

代码语言:javascript
运行
复制
tok2idx = defaultdict(lambda: 0)
idx2tok = {}

for seq in sequences:
    for tok in seq:
        if not tok in tok2idx:
            tok2idx[tok] = index
            idx2tok[index] = tok
            index += 1

这里的序列是所有序列的列表(即数据集中的句子)。如果您只有一个单词或标记的列表,那么只需保留内部循环,就可以轻松地更改模型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59549980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档