You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tokenizer生成序列时遇numpy.ndarray无lower属性错误

解决Tokenizer处理时的AttributeError问题

嘿,这个错误我太熟了!咱们先搞明白为啥会出这个问题:

你调用tockenizer_left.texts_to_sequences(x_left)时触发了AttributeError: 'numpy.ndarray' object has no attribute 'lower',本质原因是Tokenizer的texts_to_sequences方法需要输入由字符串组成的可迭代对象(比如列表),但你的x_left是numpy数组,而且可能数组里的元素还不是字符串类型——当Tokenizer尝试对每个文本执行lower()转小写时,numpy数组本身没有这个方法,自然就报错了。

另外我还发现你代码里有几个小坑,一起给你修正:

具体解决步骤

1. 确保输入文本是字符串列表

先把numpy数组转成字符串类型的列表,这样Tokenizer才能正确处理:

# 假设x_left是numpy数组,先转成字符串列表
x_left = x_left.astype(str).tolist()
x_right = x_right.astype(str).tolist()

2. 修正pad_sequences的参数错误

你代码里的pad_sequences调用有两处错误:

  • x_left_pad = pad_sequences(tockenizer_left, maxlen=max_seq_length):第一个参数应该是生成的tokens序列x_left_tokens,不是Tokenizer对象
  • x_right_pad = pad_sequences(x_right_tokens,xlen=max_seq_length):参数名写错了,应该是maxlen而不是xlen

3. 统一使用一个Tokenizer(关键!)

你现在用了两个Tokenizer分别处理左右文本,这会导致两边的词汇表不统一——Manhattan LSTM需要左右文本共享同一个嵌入空间,否则模型没法正确计算语义相似度。所以应该用一个Tokenizer拟合所有训练文本(左+右):

修正后的完整代码示例

max_nb_words = 50000

# 计算最大序列长度,简化写法
seq_lengths = [len(s) for s in data_train['Data_Name_left'].values] + [len(s) for s in data_train['Data_Name_right'].values]
max_seq_length = max(seq_lengths)

# 只用一个Tokenizer,拟合所有训练文本
tokenizer = Tokenizer(num_words=max_nb_words, filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}~', lower=True)
tokenizer.fit_on_texts(data_train['Data_Name_left'].values.tolist() + data_train['Data_Name_right'].values.tolist())

# 处理左文本
x_left = x_left.astype(str).tolist()
x_left_tokens = tokenizer.texts_to_sequences(x_left)
x_left_pad = pad_sequences(x_left_tokens, maxlen=max_seq_length)

# 处理右文本
x_right = x_right.astype(str).tolist()
x_right_tokens = tokenizer.texts_to_sequences(x_right)
x_right_pad = pad_sequences(x_right_tokens, maxlen=max_seq_length)

# 词汇表大小用统一的tokenizer计算
vocab_size = len(tokenizer.word_index) + 1

这样调整后,不仅能解决lower()的错误,还能保证左右文本使用相同的词汇映射,更符合Manhattan LSTM的建模需求。

内容的提问来源于stack exchange,提问作者Ivan Pozniak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:10:30