Что означает дословный синтаксис в Python?

Я вижу следующий фрагмент скрипта на учебной странице Gensim.

Каков синтаксис слово в слово в приведенном ниже скрипте Python?

>> texts = [[word for word in document.lower().split() if word not in stoplist]
>>          for document in documents]

person smwikipedia    schedule 06.01.2014    source источник


Ответы (3)


Это понимание списков. Размещенный вами код перебирает каждый элемент в document.lower.split() и создает новый список, содержащий только те элементы, которые соответствуют условию if. Это делается для каждого документа в documents.

Попробуйте...

elems = [1, 2, 3, 4]
squares = [e*e for e in elems]  # square each element
big = [e for e in elems if e > 2]  # keep elements bigger than 2

Как видно из вашего примера, списки могут быть вложенными.

person ChrisP    schedule 06.01.2014

Это понимание списков. Более простым примером может быть:

evens = [num for num in range(100) if num % 2 == 0]
person tckmn    schedule 06.01.2014

Я совершенно уверен, что видел эту строку в некоторых приложениях НЛП.

Это понимание списка:

[[word for word in document.lower().split() if word not in stoplist] for document in documents]

такой же как

ending_list = [] # often known as document stream in NLP.
for document in documents: # Loop through a list.
  internal_list = [] # often known as a a list tokens
  for word in document.lower().split():
    if word not in stoplist:
      internal_list.append(word) # this is where the [[word for word...] ...] appears
  ending_list.append(internal_list)

В основном вам нужен список документов, который содержит список токенов. Таким образом, просматривая документы,

for document in documents:

затем вы разделяете каждый документ на токены

  list_of_tokens = []
  for word in document.lower().split():

а затем составьте список этих токенов:

    list_of_tokens.append(word)    

Например:

>>> doc = "This is a foo bar sentence ."
>>> [word for word in doc.lower().split()]
['this', 'is', 'a', 'foo', 'bar', 'sentence', '.']

Это то же самое, что:

>>> doc = "This is a foo bar sentence ."
>>> list_of_tokens = []
>>> for word in doc.lower().split():
...   list_of_tokens.append(word)
... 
>>> list_of_tokens
['this', 'is', 'a', 'foo', 'bar', 'sentence', '.']
person alvas    schedule 06.01.2014
comment
Рад, что ответ помог =) - person alvas; 11.08.2015