tf.strings.ngrams
Создает тензор n-грамм на основе data.
tf.strings.ngrams(
data,
ngram_width,
separator=' ',
pad_values=None,
padding_width=None,
preserve_short_sequences=False,
name=None
)
Создает тензор n-грамм на основе data. N-граммы создаются путем объединения окон из width соседних строк внутренней оси data с помощью separator.
При необходимости входные данные можно дополнить в начале и в конце последовательности с помощью аргумента pad_values. Если он задан, pad_values должен содержать либо кортеж строк, либо одну строку; нулевой элемент кортежа будет использоваться для дополнения левой стороны последовательности, а первый элемент кортежа — для дополнения правой стороны последовательности. Аргумент padding_width задает количество добавляемых с каждой стороны значений дополнения; по умолчанию используется ngram_width-1.
Если эта операция настроена без дополнения или если задано дополнение, а значение padding_width меньше ngram_width-1, последовательность либо последовательность вместе с дополнением может быть короче ширины n-граммы. В этом случае для такой последовательности n-граммы создаваться не будут. Этого можно избежать, задав preserve_short_sequences: тогда операция всегда будет создавать как минимум одну n-грамму для каждой непустой последовательности.
Примеры:
tf.strings.ngrams(["A", "B", "C", "D"], 2).numpy() array([b'A B', b'B C', b'C D'], dtype=object) tf.strings.ngrams(["TF", "and", "keras"], 1).numpy() array([b'TF', b'and', b'keras'], dtype=object)
| Аргументы | |
|---|---|
data | Тензор или RaggedTensor, содержащий исходные данные для n-грамм. |
ngram_width | Ширина создаваемых n-грамм. Если это список или кортеж, операция вернет n-граммы всех указанных размеров в порядке, заданном списком. Значения должны быть целыми числами больше 0 и не быть тензорами. |
separator | Строка-разделитель между элементами n-граммы. Должна быть строковой константой, а не тензором. |
pad_values | Кортеж (left_pad_value, right_pad_value), одна строка или None. Если указано None, дополнение добавляться не будет; если задана одна строка, она будет использоваться для дополнения с обеих сторон. Значения должны быть строками Python. |
padding_width | Если задано, с обеих сторон каждой последовательности будет добавлено padding_width значений дополнения. По умолчанию используется ngram_width-1. Должно быть больше
|
preserve_short_sequences | Если значение равно true, гарантирует создание хотя бы одной n-граммы для каждой входной последовательности. В частности, если входная последовательность короче min(ngram_width) + 2*pad_width, создается одна n-грамма, содержащая всю последовательность. Если значение равно false, для таких коротких входных последовательностей n-граммы не создаются. |
name | Имя операции. |
| Возвращает | |
|---|---|
RaggedTensor с n-граммами. Если data.shape=[D1...DN, S], то output.shape=[D1...DN, NUM_NGRAMS], где NUM_NGRAMS=S-ngram_width+1+2*padding_width. |
| Вызывает исключения | |
|---|---|
TypeError | если для pad_values задан недопустимый тип. |
ValueError | если для pad_values, padding_width или ngram_width задано недопустимое значение. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/strings/ngrams