не в состоянии понять цель max_document_length
The VocabularyProcessor
отображает текстовые документы в векторы, и вам нужны эти векторы быть последовательной длины.
Ваши записи входных данных не могут (или, вероятно, не будут) иметь одинаковую длину. Например, если вы работаете с предложениями для анализа настроений, они будут иметь разную длину.
Вы предоставляете этот параметр VocabularyProcessor
, чтобы он мог регулировать длину выходных векторов. По the documentation,
max_document_length: Максимальная длина документов. если документы дольше, они будут обрезаны, если они короче - дополнены.
Проверьте source code.
def transform(self, raw_documents):
"""Transform documents to word-id matrix.
Convert words to ids with vocabulary fitted with fit or the one
provided in the constructor.
Args:
raw_documents: An iterable which yield either str or unicode.
Yields:
x: iterable, [n_samples, max_document_length]. Word-id matrix.
"""
for tokens in self._tokenizer(raw_documents):
word_ids = np.zeros(self.max_document_length, np.int64)
for idx, token in enumerate(tokens):
if idx >= self.max_document_length:
break
word_ids[idx] = self.vocabulary_.get(token)
yield word_ids
Обратите внимание на строку word_ids = np.zeros(self.max_document_length)
.
Каждая строка в переменной raw_documents
будет отображаться в вектор длины max_document_length
.
Я пытаюсь следовать тому же учебнику, но есть несколько вещей, которые я не понимаю. Может быть, вы можете [взглянуть на мой вопрос] (http://stackoverflow.com/questions/41665109/trying-to-understand-cnns-for-nlp-tutorial-using-tensorflow) и помочь мне? – displayname