1

次のコードを使用して、huggingface-transformer のパイプラインを使用して記事を要約しています。このコードの使用:

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

要約と元の記事の比率を定義するにはどうすればよいですか? たとえば、元の記事の 20%?

EDIT 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
4

1 に答える 1

1

(この回答は、トランスフォーマーのバージョン 2.6 のドキュメントに基づいていることに注意してください)

パイプライン機能に関するドキュメントはまだ非常に浅いようです。そのため、もう少し深く掘り下げる必要があります。Python オブジェクトを呼び出すと、内部で独自のプロパティが参照されます。これは、要約パイプラインについてここで__call__見つけることができます。

BartForConditionalGeneration(基になるモデルと同様に) min_lengthandmax_lengthを指定できることに注意してください。

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

これにより、元のデータの約 10 ~ 20% の長さの要約が得られますが、もちろん、好みに合わせて変更できます。BartForConditionalGenerationforのデフォルト値max_lengthは 20 (現時点でmin_lengthは文書化されていませんが、デフォルトは 0) ですが、要約パイプラインにはmin_length=21との値があることに注意してくださいmax_length=142

于 2020-03-25T10:19:33.923 に答える