Фильтровать объект в 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)
1 ответ
Решение
Следующая строка создает фильтр для каждого предложения_токна в списке токенов:
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)))