nlp - TextEncodeInput 在尝试标记时必须是 Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
问题描述
尝试使用 distilBert 进行标记时遇到一些问题。我使用 Jupyter 笔记本。
这是我的完整代码
maxlen = 50
#tokens
maxqnans = np.int((maxlen-20)/2)
corpus_tokenized = ["[CLS] "+
" ".join(tokenizer.tokenize(re.sub(r'[^\w\s]+|\n', '',
str(txt).lower().strip()))[:maxqnans])+
" [SEP] " for txt in corpus]
#masks
masks = [[1]*len(txt.split(" ")) + [0]*(maxlen - len(
txt.split(" "))) for txt in corpus_tokenized]
#idx
idx = [tokenizer.encode(seq.split(" ")) for seq in txt_seq]
# padding
txt_seq = [txt + " [PAD]"*(maxlen-len(txt.split(" "))) if len(txt.split(" ")) != maxlen else txt for txt in corpus_tokenized]
#segments
segments = []
for seq in txt_seq:
temp, i = [], 0
for token in seq.split(" "):
temp.append(i)
if token == "[SEP]":
i += 1
segments.append(temp)
#vector
X_train = [np.asarray(idx, dtype='int32'),
np.asarray(masks, dtype='int32'),
np.asarray(segments, dtype='int32')]
据说问题出在这行代码:
idx = [tokenizer.encode(seq.split(" ")) for seq in txt_seq]
我收到以下错误:
TypeError: TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
有人可以帮我吗?谢谢!
解决方案
参数(在 tokenizer.encode 方法中)是一个字符串列表。所以我猜你的列表中包含一些不是字符串的元素(nan example)。
对不起,我只是猜测这个错误,因为我没有你的数据。你能调试你的数据吗?
推荐阅读
- javascript - 由于使用 react-native-track-player REACT-NATIVE 的文件路径而无法播放音乐
- html - 使用column-count css标签时文本列的垂直对齐?
- javascript - 尝试在图像上使用不透明度进行过渡
- datetimepicker - 删除 DateTimePicker 的底线
- sql-server - SQL Server:按子查询结果选择列名
- c# - 如何在 ASP.Net MVC 5.2.7 (.Net Framework) 中处理表单中的双数?
- c# - X 次迭代后,整个应用程序崩溃,没有任何异常(错误代码 0x3)C# UWP
- .net-core - 如何使用 Visual Studio 2019 打开开源 .NET Core 库?
- sqlite - 你能从sqlite数据库中解析一个int,原来是一个bool,在查询数据库后重新变成bool吗?
- npm - NPM 服务重写问题