Nlp 如何基于基于角色的RNN模型预测角色?

Nlp 如何基于基于角色的RNN模型预测角色?,nlp,lstm,recurrent-neural-network,Nlp,Lstm,Recurrent Neural Network,我想创建一个预测函数来完成“句子”的一部分 这里使用的模型是基于字符的RNN(LSTM)。我们应该采取哪些步骤? 我试过了,但我不能把这个句子作为输入 def generate(self) -> Tuple[List[Token], torch.tensor]: start_symbol_idx = self.vocab.get_token_index(START_SYMBOL, 'tokens') # print(start_symbol_idx) end_sy

我想创建一个预测函数来完成“句子”的一部分 这里使用的模型是基于字符的RNN(LSTM)。我们应该采取哪些步骤? 我试过了,但我不能把这个句子作为输入

 def generate(self) -> Tuple[List[Token], torch.tensor]:

    start_symbol_idx = self.vocab.get_token_index(START_SYMBOL, 'tokens')
   # print(start_symbol_idx)
    end_symbol_idx = self.vocab.get_token_index(END_SYMBOL, 'tokens')
    padding_symbol_idx = self.vocab.get_token_index(DEFAULT_PADDING_TOKEN, 'tokens')

    log_likelihood = 0.
    words = []
    state = (torch.zeros(1, 1, self.hidden_size), torch.zeros(1, 1, self.hidden_size))

    word_idx = start_symbol_idx

    for i in range(self.max_len):
        tokens = torch.tensor([[word_idx]])

        embeddings = self.embedder({'tokens': tokens})
        output, state = self.rnn._module(embeddings, state)
        output = self.hidden2out(output)

        log_prob = torch.log_softmax(output[0, 0], dim=0)

        dist = torch.exp(log_prob)

        word_idx = start_symbol_idx

        while word_idx in {start_symbol_idx, padding_symbol_idx}:
            word_idx = torch.multinomial(
                dist, num_samples=1, replacement=False).item()

        log_likelihood += log_prob[word_idx]

        if word_idx == end_symbol_idx:
            break

        token = Token(text=self.vocab.get_token_from_index(word_idx, 'tokens'))
        words.append(token)

    return words, log_likelihood,start_symbol_idx

这里有两个教程,介绍如何使用机器学习库生成文本和文档。

您尝试过什么?你在网上找到解决这个问题的资源了吗?这段代码可能对我有帮助?你的目标是什么?您是否有一个经过培训的模型,希望从中生成?是否要训练模型以生成角色?您正在搜索教程吗?你想知道如何训练/使用机器学习模型吗?我已经有了一个生成函数,代码在上面,它不是基于用户输入来完成一个句子的。