def generate_input_target_text(cut_word_list):
    """
    生成对应的训练集X和y，这里X和y都是分词过的词语list
    :param cut_word_list: 存储所有歌词，其每个元素是一个list，存储一首歌（一首歌使用的又是list of list结构，一个list是一句歌词）；
    :return:
    input_texts: 数据集X对应的list
    target_texts: 数据集y对应的list
    max_seq_input: X中样本的最大长度
    max_seq_target: y中样本的最大长度
    input_words: 数据集X中的字列表，用于统计词频，产生word2index
    target_words: 数据集y中的字列表，用于统计词频，产生index2word
    """
    # 生成X和y
    input_texts = []    # 数据集X
    target_texts = []    # 数据集y
    input_words = []    # 数据集X中的字列表，用于统计词频，产生word2index
    target_words = []    # 数据集y中的字列表，用于统计词频，产生index2word
    num_songs = len(cut_word_list)
    max_seq_input = 0   # 输入序列中的最大长度（模型中需要使用）
    max_seq_target = 0  # 输出序列中的最大长度（模型中需要使用）
    for i in range(0, num_songs):
        num_lines_eachSong = len(cut_word_list[i])
        for j in range(0, num_lines_eachSong - 1):
            input_texts.append(cut_word_list[i][j])
            input_words += (cut_word_list[i][j])
            max_seq_input = max(max_seq_input, len(cut_word_list[i][j]))
            # 开始和结束的位置分别是：“\t”和"\n"
            target_texts.append(["\t"] + cut_word_list[i][j + 1]+ ["\n"])
            target_words += (["\t"] + cut_word_list[i][j + 1] + ["\n"])
            max_seq_target = max(max_seq_target, len(["\t"] + cut_word_list[i][j + 1] + ["\n"]))
    return input_texts, target_texts, max_seq_input, max_seq_target, input_words, target_words