объект фильтра в python 3.X

В python 3.X я писал следующие коды:

Одна функция для "text_tokenizing" и другая для "удаления лишних символов". В функции «remove_characters_after_tokenization» я использовал «фильтр».

Моя проблема: когда я запускаю свой проект, я вижу эту строку в консоли:

<filter object at 0x00000277AA20DE48> <filter object at 0x00000277AA44D160> <filter object at 0x00000277AA44D470>

Как я могу решить эту проблему?

Это код моего проекта:

import nltk
import re
import string
from pprint import pprint

corpus = ["The brown fox wasn't that quick and he couldn't win the race",
          "Hey that's a great deal! I just bought a phone for $199",
          "@@You'll (learn) a **lot** in the book. Python is an amazing language !@@"]



# Declare a function for "Tokenizing Text"
def tokenize_text(text):
    sentences = nltk.sent_tokenize(text)
    word_tokens = [ nltk.word_tokenize(sentence) for sentence in sentences]
    return word_tokens

# Declare a function for "Removing Special Characters"
def remove_characters_after_tokenization(tokens):
    pattern = re.compile('[{}]'.format(re.escape(string.punctuation)))
    filtered_tokens = list(filter(None, [pattern.sub('', token) for token in tokens]))
    return filtered_tokens


token_list = [tokenize_text(text) for text in corpus]
pprint(token_list)

filtered_list_1 = list(filter(None,[remove_characters_after_tokenization(tokens)
                                for tokens in sentence_tokens])
                   for sentence_tokens in token_list)

print(type(filtered_list_1))
print(len(filtered_list_1))
print(filtered_list_1)

person brelian    schedule 26.01.2017    source источник
comment
@JETM, спасибо за ваш ответ, но как я могу проверить это дублирование, если оно существует?   -  person brelian    schedule 26.01.2017
comment
Виновником является строка, в которой вы создаете filtered_list_1. Эта строка выполняет итерацию по token_list, а не по итератору, возвращаемому фильтром, поэтому итератор фильтра остается унифицированным.   -  person EvertW    schedule 26.01.2017
comment
@brelian Извините, я не понимаю, о чем вы спрашиваете? Это комментарий, который ТАК автоматически вставляет, когда кто-то помечает его как дубликат. По сути, это означает, что я думал, что у этого человека та же проблема, что и у вас.   -  person    schedule 26.01.2017
comment
@JETM Хорошо, без проблем. На самом деле мне пришлось создать фильтр для каждого предложения_tokens в token_list.   -  person brelian    schedule 26.01.2017


Ответы (1)


Следующая строка создает фильтр для каждого sentence_tokens в token_list:

filtered_list_1 = list(filter(None, [remove_characters_after_tokenization(tokens)
                                for tokens in sentence_tokens])
                   for sentence_tokens in token_list)

Возможно, вы хотели создать список списков:

filtered_list_1 = list(filter(None, ([remove_characters_after_tokenization(tokens)
                                      for tokens in sentence_tokens]
                                     for sentence_tokens in token_list)))
person Elisha    schedule 26.01.2017
comment
Оно работает. Спасибо за вашу помощь. Именно мне пришлось фильтровать домен. ;) - person brelian; 26.01.2017