如何解决在对列表执行 list.lower() 时出现的属性错误。

huangapple go评论59阅读模式
英文:

How to solve an Attribute error when lemmatizing a list.lower()

问题

word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
AttributeError: 'list' object has no attribute 'lower'

这是错误信息。它表示无法将我的单词列表全部转换为小写。

以下是你提供的完整代码中出现错误的部分:

for document in documents:
    bag = []
    word_patterns = documents[0]  # 这里应该是 document[0] 而不是 documents[0]
    word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
    for word in words:
        bag.append(1) if word in word_patterns else bag.append(0)

你应该将 documents[0] 改为 document[0],以便正确迭代文档中的单词列表。这应该修复这个错误。

希望这有所帮助!

英文:
    word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
AttributeError: 'list' object has no attribute 'lower'

I can't figure out how to fix the error. Its saying that my list of word can't be lowercased at all.
this is the entire code

import random
import json
import pickle
import numpy as np


import nltk
from nltk.stem import WordNetLemmatizer



from tensorflow import keras
from keras.layers import Dense, Activation, Dropout
from keras.models import Sequential
from keras.optimizers import SGD


lemmatizer = WordNetLemmatizer()

intents = json.loads(open('intents.json').read())

words= []
classes = []
documents = []
ignore_letters = ['?', '!', '.', ',']

for intent in intents["intents"]:
    for pattern in intent['patterns']:
        word_list = nltk.word_tokenize(pattern)
        words.extend(word_list)
        documents.append((word_list, intent['tag']))
        if intent['tag'] not in classes:
            classes.append(intent['tag'])

words = [lemmatizer.lemmatize(word) for word in words if word not in ignore_letters]
words = sorted(set(words))


classes = sorted(set(classes))


pickle.dump(words, open('words.pkl', 'wb'))
pickle.dump(words, open('classes.pkl', 'wb'))


training=[]
output_empty = [0] * len(classes)

for document in documents:
    bag = []
    word_patterns = documents[0]
    word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
    for word in words:
        bag.append(1) if word in word_patterns else bag.append(0)
    

    output_row = list(output_empty )
    output_row[classes.index(document[1])] = 1
    training.append(bag, output_row)

random.shuffle(training)
training = np.array(training)

train_x = list(training[:,0])
train_y = list(training[:,1]) 

#neural network


model = Sequential()
model.add(Dense(128,input_shape = (len(train_x[0]),),activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(train_y[0]), activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

model.fit(np.array(train_x), np.array(train_y), epochs=200, batch_size=5, verbose=1)
model.save('chatbot_model.model')

print("done")

the file stopped working once I uploaded the neural network. The neural network was supposed to train the bot but then the Attribute error came up. Unless I fix that I can't train the bot.

Any suggestions would help:D
This code was supposed to be for an intelligent chatbot in python. I need to finish training before can actually build the bot

答案1

得分: 0

错误出现在调用lemmatize之前,问题已经出现在word.lower()

您期望word_patterns是一个字符串列表,但它不是,它是一个列表的列表。

我跟踪了wordword_patterns的源代码,如下:

word_patterns = documents[0]

这看起来非常可疑,我认为明显应该是:

word_patterns = document[0]

因为document是您实际的循环变量。

英文:
    word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
AttributeError: 'list' object has no attribute 'lower'

The error here occurs before lemmatize is even called, the problem is already with word.lower().

You are expecting word_patterns to be a list of strings, but it's not. It's a list of lists.

I followed the source of word to word_patterns to

word_patterns = documents[0]

This looks very suspicious, and I think it is clearly meant to be

word_patterns = document[0]

as document is your actual loop variable.

huangapple
  • 本文由 发表于 2023年7月24日 00:59:01
  • 转载请务必保留本文链接:https://go.coder-hub.com/76749399.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定