pipeline — модель в одну строку
transformers — библиотека Hugging Face с тысячами готовых моделей: анализ тона, перевод, ответы на вопросы, генерация текста, распознавание речи и картинок. Модели лежат на сайте Hugging Face Hub, а библиотека скачивает их и запускает у вас на компьютере.
В курсе вы соберёте определитель тона отзывов: от готового pipeline до того, что происходит внутри — токенов, логитов и генерации.
pipeline
from transformers import pipeline
classify = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
print(classify(["Great phone!", "Battery is awful"]))
# [{'label': 'POSITIVE', 'score': 0.9998}, {'label': 'NEGATIVE', 'score': 0.9997}]
- при первом запуске модель скачивается (сотни мегабайт) и кладётся в кэш (
~/.cache/huggingface); потом берётся оттуда — интернет уже не нужен; pipelineпринимает строку или список строк и возвращает список ответов;- лучше всегда указывать
model=…— тогда результат не изменится, если библиотека поменяет модель по умолчанию. Для русских текстов ищите модели на Hub, например по запросу «russian sentiment».
Другие задачи: "translation", "summarization", "question-answering", "text-generation", "zero-shot-classification", "automatic-speech-recognition", "image-classification".
Ответ модели
label — выбранный класс, score — уверенность модели в нём (вероятность от 0 до 1). При двух классах 0.5 означает «понятия не имею». Поэтому в настоящих программах ставят порог: если уверенность мала, честнее ответить «не уверен», чем выдать случайный ответ.
Zero-shot
classify = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
classify("The courier was late", candidate_labels=["delivery", "price", "quality"])
# {'sequence': '…', 'labels': ['delivery', 'quality', 'price'], 'scores': [0.91, 0.05, 0.04]}
Темы задаются прямо при вызове — модель ничему не нужно учить. Оценки идут по убыванию.
Как проверяются задачи
Скачивать огромные модели на каждую проверку было бы долго, поэтому в задачах про pipeline проверка подставляет заготовленные ответы модели в том же формате. «Запустить у себя» скачивает настоящую модель и прогоняет живые отзывы. В следующих темах проверка запускает настоящие классы transformers на крошечных моделях прямо у вас на компьютере.
Итог
pipeline(задача, model=…): скачивается один раз, работает локально;- ответ —
{"label", "score"}; порог уверенности; - zero-shot:
candidate_labels, ответlabels+scoresпо убыванию.