如何定义拥抱面变压器管道的汇总比率?

时间:2020-03-25 06:08:45

标签: pytorch huggingface-transformers

我正在使用以下代码来总结使用拥抱面变压器的管道的文章。使用此代码:

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 个答案:

答案 0 :(得分:1)

(请注意,此答案基于2.6版的变压器文档)

看来,到目前为止,关于管道功能的文档仍然很浅,这就是为什么我们必须更深入地研究。调用Python对象时,它在内部引用自己的__call__属性,我们可以找到here for the summarization pipeline

请注意,它允许我们(类似于底层的BartForConditionalGeneration model)指定min_lengthmax_length,这就是为什么我们可以简单地调用类似

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

这将为您提供大约原始数据长度的10-20%的摘要,但是您当然可以根据自己的喜好进行更改。请注意,BartForConditionalGeneration的{​​{1}}的默认值为20(到目前为止,max_length尚未记录,但默认值为0),而摘要管道的值为min_lengthmin_length=21