Skip to content

KNNWithGenerative.py

Zahar A. Ponimash edited this page Feb 6, 2024 · 1 revision

Документация к файлу "KNNWithGenerative.py"

Файл KNNWithGenerative.py содержит определения классов FredStruct и PromptBot, которые используются для генерации ответов на вопросы с помощью комбинации метода k-ближайших соседей (KNN) и генеративных моделей на основе трансформеров.

Классы

1. FredStruct

Описание: Класс для инициализации и управления моделью FRED, основанной на T5.

Атрибуты:

  • tokenizer: Токенизатор модели FRED.
  • fred_model: Модель FRED.

Методы:

  • __init__(path: str, device: str): Инициализирует модель и токенизатор FRED.
  • get_model(): Возвращает модель FRED.
  • get_tokenizer(): Возвращает токенизатор модели FRED.

2. PromptBot

Описание: Класс для генерации ответов на вопросы, используя метод KNN и генеративные модели.

Атрибуты:

  • max_words: Максимальное количество слов в ответе.
  • knn: Экземпляр KNN.
  • texts: Список текстов для ответов.
  • sbert: Модель векторизации (Sentence-BERT).
  • mean, std: Статистические параметры для нормализации векторов.
  • vect_transformer: Функция для преобразования векторов.
  • fred: Экземпляр FredStruct.
  • device: Устройство для вычислений ('cpu' или 'cuda').

Методы:

  • __init__(...): Инициализирует все необходимые параметры и модели.
  • __clean_string(text: str): Очищает и нормализует текстовую строку.
  • __qa__(doc: str, q: str): Готовит запрос для модели FRED.
  • __generate__(doc: str, q: str): Генерирует ответ на вопрос.
  • get_vect(q: str): Получает векторное представление для вопроса.
  • cut(text: str, max_len: int): Обрезает текст до указанной длины.
  • get_answers(q: str, top_k: int): Генерирует ответы на вопросы, используя KNN и модель FRED.

Общее применение

PromptBot предназначен для автоматической генерации ответов на заданные вопросы. Он использует метод KNN для поиска ближайших текстовых сегментов к векторному представлению вопроса, а затем применяет модель FRED для генерации ответа, учитывая найденные сегменты. Этот подход позволяет генерировать контекстно-релевантные и информативные ответы на основе большого объема текстовых данных.

Clone this wiki locally