Спасибо, что нашли время, чтобы прочитать это. Я сталкиваюсь с проблемой, когда вызов списка вне функции возвращает пустые значения. То, что я хочу сделать, это посмотреть на документ и, если слова в этом документе также находятся в предопределенном списке (или нет), составить список из 1 (и 0). Далее я хочу перебрать несколько документов и составить список списков. Я думаю, что приведенный ниже пример в коде даст больше контекста к тому, чего я пытаюсь достичь.
Введите:
import nltk
company_list = ["This is a company that does excavation",
"Last financial quarter was bad ",
"This year we are going be exceed the projected returns."]
middle_list = []
vector = []
final_list = []
bag = ["year", "excavation", "quarter", "returns"]
def test_function():
counter = 0
for company in company_list:
tokenize = nltk.word_tokenize(company)
# eliminate the duplicates
tokenize = set(tokenize)
# make all the words lower case
for word in tokenize:
word = word.lower()
middle_list.append(word)
for word in bag:
if word in middle_list:
x = 1
else:
x = 0
vector.append(x)
# clear the middle list so that a new company's words can be put inside an empty list
middle_list.clear()
counter += 1
print("Vector values: At", counter, vector)
final_list.append(vector)
print("List values: At", counter, final_list)
# clear the vector so that for each company it starts with an empty list
vector.clear()
return final_list
test_function()
print("list outside function: ", final_list)
Выход:
Vector values: At 1 [0, 1, 0, 0]
List values: At 1 [[0, 1, 0, 0]]
Vector values: At 2 [0, 0, 1, 0]
List values: At 2 [[0, 0, 1, 0], [0, 0, 1, 0]]
Vector values: At 3 [1, 0, 0, 1]
List values: At 3 [[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1]]
list outside function: [[], [], []]
Ожидаемый результат: [0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 1]
Как видите, есть 2 проблемы:
1) Когда я печатаю список внутри функции, он возвращает список векторов, но векторы являются дубликатами (которые я не хочу)
2) Когда я хочу напечатать список вне функции, он возвращает список из 3 списков, но каждый из этих списков пуст.
Спасибо за ваше время и помощь!