При очистке токенизированных данных, как использовать .isalpha() в списке списков для возврата значений, а не логических значений?

#nltk #list-comprehension

#nltk #понимание списка

Вопрос:

Я практикую NLP с библиотекой nltk и хочу создать для этого набор данных. Я объединяю несколько документов в список списков, а затем предварительно обрабатываю их. Сначала я маркирую его, в нижнем регистре, а затем я хочу убрать знаки препинания. Это работает для вектора, но не для списка списков:

Пример для вектора:

 a = 'This is a Testsentence and it is beautiful times 10!**!.' 
b = word_tokenize(a) 
c = [x.lower() for x in b] 
['this', 'is', 'a', 'testsentence', 'and', 'it', 'is', 'beautiful', 'times', '10', '.'] 
d = [x for x in c if x.isalpha()] 
['this', 'is', 'a', 'testsentence', 'and', 'it', 'is', 'beautiful', 'times']
  

Теперь я хочу сделать это в списке списков, но мне не удается записать понимание списка в конце:

 aa = 'This is a Testsentence and it is beautiful times 10.'
bb = 'It is a beautiful Testsentence?'
cc = 'Testsentence beautiful!'
dd = [aa, bb, cc]
ee = [word_tokenize(x) for x in dd]
ff = [[x.lower() for x in y] for y in ee]
[['this', 'is', 'a', 'testsentence', 'and', 'it', 'is', 'beautiful', 'times', '10', '.'], ['it', 'is', 'a', 'beautiful', 'testsentence', '?'], ['testsentence', 'beautiful', '!']]
  

Вот тут-то и начинаются мои проблемы, поскольку я не могу понять, как правильно написать представление списка.

 gg = [[j.isalpha() for j in i] for i in ff]
  

Это результат

 [[True, True, True, True, True, True, True, True, True, False, False], [True, True, True, True, True, False], [True, True, False]]
  

Но я хочу что-то вроде этого:

 [['this', 'is', 'a', 'testsentence', 'and', 'it', 'is', 'beautiful', 'times', '10', '.'], ['it', 'is', 'a', 'beautiful', 'testsentence', '?'], ['testsentence', 'beautiful', '!']]
  

Спасибо 🙂

Комментарии:

1. Ваш ожидаемый результат равен ff . Можете ли вы обновить свой вопрос, чтобы исправить это?

Ответ №1:

Попробуйте следующее

 gg = [[j for j in i if j.isalpha()] for i in ff]
  

Это возвращает ожидаемый ответ

 [['this', 'is', 'a', 'testsentence', 'and', 'it', 'is', 'beautiful', 'times'],
['it', 'is', 'a', 'beautiful', 'testsentence'],
['testsentence', 'beautiful']]