Source code for scorers.pipeline_scorer
import torch
from transformers import pipeline
from .positive_scorer import PositiveScorer
[docs]class PipelineScorer(PositiveScorer):
"""
Feature class relying on the pipelines from Huggingface's transformers
"""
def __init__(self, label, params, temperature=1.0):
"""initializes a PipelineFeature's instance
Parameters
----------
label: string
expected positive label from the pipeline
"""
self.label = label
self.pipeline = pipeline(**params)
self.temperature = temperature
[docs] def log_score(self, samples, _):
"""computes the log-scores of the samples
from the label returned by the pipeline
Parameters
----------
samples : list(Sample)
list of samples to log-score
Returns
-------
tensor of log-probabilities"""
return torch.log(
torch.tensor(
[[r_i["score"] for r_i in r if self.label == r_i["label"]][0]
for r in self.pipeline([s.text for s in samples], return_all_scores=True)]
).float()
) / self.temperature