Токенизация списков строк для возврата одного списка токенизированных слов - PullRequest
1 голос
/ 17 марта 2019

Добрый день,

У меня есть функция, которая должна иметь возможность опускать и маркировать текст и возвращать токены. Вот функция ниже:

def preprocess_text(text):
""" A function to lower and tokenize text data """ 
# Lower the text
lower_text = text.lower()

# tokenize the text into a list of words
 tokens = nltk.tokenize.word_tokenize(lower_text)

return tokens

Затем я хочу применить функцию к моим фактическим текстовым данным под названием data, представляющим собой список со строками внутри него. Я хочу перебрать каждую строку внутри data и применить функцию для опускания и токенизации текстовых данных.

Наконец, я хочу добавить токенизированные слова в окончательный список с именем tokenized_final, который должен быть окончательным списком, содержащим токенизированные слова. Вот следующий бит кода ниже:

# Final list with tokenized words
tokenized_final = []

# Iterating over each string in data
for x in data:
    # Calliing preprocess text function
    token = preprocess_text(x)

    tokenized_final.append(token)  

Однако, когда я все это делаю и распечатываю список tokenized_final. Он выводит большой список, содержащий списки внутри него.

print (tokeninized_final)

Output:
 [['pfe', 'bulls', 'have', 'reasons', 'on'],
 ['to', 'pay', 'more', 'attention'],
 ['there', 'is', 'still']]

Когда желаемый результат для tokenized_final должен быть таким в одном списке:

['pfe', 'bulls', 'have', 'reasons', 'on','to', 'pay','more', 'attention','there','is', 'still']

Есть ли способ исправить функцию предварительной обработки и применить ее к данным, чтобы получить желаемый результат. Или есть ли способ сделать это? ... Помощь действительно будет оценена здесь. Заранее спасибо

1 Ответ

1 голос
/ 17 марта 2019

Вам просто нужно сгладить результирующий список:

# Final list with tokenized words
tokenized_final = []

# Iterating over each string in data
for x in data:
    # Calliing preprocess text function
    token = preprocess_text(x)

    tokenized_final.append(token) 

flattened_tokeninized_final = [i for j in tokeninized_final for i in j]
...