Как определить соотношение резюме с обнимающими торцами трансформаторов? - PullRequest
1 голос
/ 25 марта 2020

Я использую следующий код, чтобы подвести итог статьи об использовании конвейера huggingface-transformer. Используя этот код:

from transformers import pipeline
summarizer = pipeline(task="summarization" )
summary = summarizer(text)
print(summary[0]['summary_text'])

Как определить соотношение между резюме и оригинальной статьей? Например, 20% оригинальной статьи?

РЕДАКТИРОВАТЬ 1: Я реализовал решение, которое вы предложили, но получил следующую ошибку. Это код, который я использовал:

summarizer(text, min_length = int(0.1 * len(text)), max_length = int(0.2 * len(text)))
print(summary[0]['summary_text'])

Ошибка, которую я получил:

RuntimeError                              Traceback (most recent call last)
<ipython-input-9-bc11c5d8eb66> in <module>()
----> 1 summarizer(text, min_length = int(0.1 * len(text)), max_length = int(0.2 * len(text)))
      2 print(summary[0]['summary_text'])

13 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
   1482         # remove once script supports set_grad_enabled
   1483         _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
-> 1484     return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
   1485 
   1486 

RuntimeError: index out of range: Tried to access index 1026 out of table with 1025 rows. at /pytorch/aten/src/TH/generic/THTensorEvenMoreMath.cpp:418

1 Ответ

1 голос
/ 25 марта 2020

(Обратите внимание, что этот ответ основан на документации для трансформаторов версии 2.6)

Похоже, что на данный момент документация по функции конвейера все еще очень мала, поэтому нам приходится копать немного глубже При вызове объекта Python он внутренне ссылается на свое собственное свойство __call__, которое мы можем найти здесь для конвейера суммирования .

Обратите внимание, что это позволяет нам (аналогично базовому BartForConditionalGeneration модель ) для указания min_length и max_length, поэтому мы можем просто позвонить с чем-то вроде

summarizer(text, min_length = 0.1 * len(text), max_length = 0.2 * len(text)

Это даст вам сводную информацию о 10 -20% длины исходных данных, но, конечно, вы можете изменить это по своему вкусу. Обратите внимание, что значение по умолчанию для BartForConditionalGeneration для max_length равно 20 (на данный момент min_length недокументировано, но по умолчанию равно 0), тогда как конвейер суммирования имеет значения min_length=21 и max_length=142.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...