例如有name.txt
张三
李四
王五
赵六
生成输入序列:
import tflearn
from tflearn.data_utils import *
path = "D:\\data\\name.txt"
maxlen = 5
file_lines = open(path, "r",encoding= 'utf8').read()
print(file_lines)
# 张三
# 李四
# 王五
# 赵六
# 其实这个序列为'张三\n李四\n王五\n赵六'
X, Y, char_idx = string_to_semi_redundant_sequences(file_lines, seq_maxlen=maxlen, redun_step=2)
print(X.shape)
# (3, 5, 9)
# 表示生成3个序列,每个序列长度为5,即'为张三\n李四',9列中每列代表词典中的id,例如(1,1,5)为true,则表示'张'字
# 而对于步长redun_step=2,即有相对于上个序列的首字符,往后跳2字符后再取序列,例如本例
# 序列1:张三\n李四,下一个字符为'\n'
# 序列2:\n李四\n王,下一个字符为'五'
# 序列3:四\n王五\n,下一个字符为'赵'
print(X)
# [[[False False False False False True False False False]
# [False True False False False False False False False]
# [ True False False False False False False False False]
# [False False False False False False True False False]
# [False False False False True False False False False]]
#
# [[ True False False False False False False False False]
# [False False False False False False True False False]
# [False False False False True False False False False]
# [ True False False False False False False False False]
# [False False False False False False False True False]]
#
# [[False False False False True False False False False]
# [ True False False False False False False False False]
# [False False False False False False False True False]
# [False False True False False False False False False]
# [ True False False False False False False False False]]]
print(Y)
# 3个序列对应的标签,即5个序列字符后,下一个字符是啥,以第一个序列为例,'张三\n李四',下一个字符为'\n',0列为true
# [[ True False False False False False False False False]
# [False False True False False False False False False]
# [False False False False False False False False True]]
print(char_idx)
# {'五': 2, '李': 6, '三': 1, '张': 5, '赵': 8, '六': 3, '王': 7, '\n': 0, '四': 4}