Python Как исправить вложенный цикл, который возвращает буквы вместо слов? - PullRequest
0 голосов
/ 02 апреля 2019

Я создал функцию для удаления стоп-слов из списка предложений. Каждая запись в списке - это отдельное предложение. Однако выводом является печать каждой буквы слов и удаление некоторых букв.

Код ниже - это то, что я пробовал. Я думаю, что он печатает букву за буквой, потому что это один дополнительный цикл, чем необходимо, но когда я удаляю внутренний цикл, он выводит только предложения без каких-либо заметных изменений.


import pandas as pd
from nltk.corpus import stopwords


def remove_stop(data):
    filtered_line = []
    filtered_data = []

    stop_words = set(stopwords.words("english"))


    for line in data:
        for word in line:
            if word not in stop_words:
                filtered_line.append(word)
        filtered_data.append(filtered_line)
        filtered_line = []

    return filtered_data

data = pd.read_csv("text.csv") # each row is a sentence or sentences
title = list(data['Title'])

clean = remove_stop(title)
print(type(clean))
print(clean)

Пример ввода: [«Лошадь была в сарае», «Желтая куртка укусила мальчика», «Дом был красным»]

Предполагаемый результат: ["сарай для лошадей", "желтый пиджак, мальчик", "красный дом"]

Фактический результат: [['T', 'h', 'e', ​​'', 'h', 'r', 'e', ​​'', 'w', '', '', 'h ',' e ',' ',' b ',' r ',' n '], [' T ',' h ',' e ',' ',' e ',' l ',' l ', 'w', '', 'j', 'c', 'k', 'e', ​​'', 'b', '', 'h', 'e', ​​'', 'b'], [ 'T', 'h', 'e', ​​'', 'h', 'u', 'e', ​​'', 'w', '', 'r', 'e']]

Ответы [ 2 ]

1 голос
/ 02 апреля 2019
for word in line:

В приведенной выше строке будет использоваться разделитель по умолчанию и он разделен на список символов. Измените это на что-то вроде

for word in line.split(" "):
0 голосов
/ 02 апреля 2019

Попробуйте изменить for word in line: на for word in line.split():, чтобы повторять слова вместо символов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...