Вопрос или проблема
Я пытаюсь оценить вероятность генерации конкретного предложения из большого набора предложений. Для этого я начинаю с простого подхода: обучения пользовательской n-gram языковой модели и расчета значений перплексии для списка предложений.
Я обнаружил, что пакет KenLM (https://www.aclweb.org/anthology/W11-2123/) часто использовался для выполнения этой задачи. Однако он довольно старый (опубликован в 2011 году).
С другой стороны, я заметил, что две самых известных современных NLP-пакета, BERT и GPT-2, оба основаны на предобученных моделях.
Мне интересно, есть ли какой-либо пакет новее KenLM, подходящий для этой задачи оценки вероятности.
Я предлагаю вам использовать реализацию Hugging Face, которая включает все современные языковые модели, и дообучить их на вашем наборе данных. У них есть простые в использовании API для дообучения, которые одинаковы для всех моделей LM.
Кажется, вам нужна языковая модель. Вам следует обучить ее на вашем “большом наборе предложений”, а затем использовать для вычисления вероятности любого данного предложения.
KenLM – это классическая языковая модель. Она реализует интерполированное модифицированное сглаживание Кнесера-Нея. Основные публикации, описывающие ее, находятся здесь и здесь.
Современные нейронные языковые модели могут предоставить вам лучшую производительность. В зависимости от ваших требований вы можете попробовать более простую AWD-LSTM, основанную на регуляризованной долгосрочной краткосрочной памяти, или более сложную модель GPT-2, основанную на архитектуре Transformer. Для моделей на основе Transformer я предлагаю использовать библиотеку HuggingFace Transformers на Python, которая упрощает обучение и использование такого типа моделей и имеет репозиторий предобученных моделей.
BERT значительно отличается от обычной языковой модели; это маскированная языковая модель. Она не предназначена для оценки вероятности, к которой вы стремитесь, но есть некоторые предложения использовать ее таким образом.
Оценки на основе GPT в настоящее время часто упоминаются как современные достижения. Например, можно использовать https://github.com/nlpyang/geval. Статья: G-Eval: Оценка NLG с использованием GPT-4 с лучшей согласованностью с человеком.
Ответ или решение
В последние годы область обработки естественного языка (NLP) значительно продвинулась благодаря разработке современных языковых моделей. Если вам необходимо оценить вероятность генерации определенного предложения из большого набора предложений, существует несколько современных пакетов на Python, которые могут предложить превосходные решения, превосходящие старые подходы, такие как KenLM.
Современные пакеты для оценки языковой похожести
1. Hugging Face Transformers
Одним из самых популярных пакетов на сегодняшний день является Hugging Face Transformers. Этот пакет предоставляет доступ к предобученным языковым моделям, таким как BERT, GPT-2 и множество других. Вы можете настраивать модели на своем наборе данных и использовать их для вычисления вероятностей предложений. Hugging Face предлагает удобные API для интеграции и тонкой настройки, что делает его идеальным выбором для многопрофильного использования.
2. GPT-2 и его варианты
Модель GPT-2 также является отличным выбором для задач, связанных с генерацией текста и оценкой вероятности. Она основана на архитектуре трансформеров и показывает отличные результаты в различных заданиях по естественному языку. Вы можете использовать такие реализации, как geval, которые настраиваются для оценки генерации языка, используя более глубокие версии GPT, такие как GPT-4. Работа со статьей G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment продемонстрировала улучшение оценки с использованием GPT-4.
3. AWD-LSTM
Еще одним вариантом является AWD-LSTM, который основан на регуляризованной модели длительной краткосрочной памяти (LSTM). Это простой в использовании пакет, который может быть эффективен для обучения языковых моделей на небольших наборах данных. Однако следует учитывать, что в зависимости от ваших требований производительность может быть ниже по сравнению с более современными архитектурами, такими как трансформеры.
4. FastText
Для оценки схожести и создания векторных представлений слов существует также пакет FastText. Он предоставляет инструменты для обучения моделей представлений слов, которые могут использоваться для оценки схожести предложений. Хотя FastText не является языковой моделью в строгом смысле, его можно использовать для вычисления косинусного сходства или других метрик.
5. Vektora
Еще один интересный инструмент – Vektora, который предоставляет простые векторы для текстовой информации и обучение моделей по контексту. Это может помочь в анализе текстов и оценке их схожести.
Выводы
Для оценки вероятности генерации предложений рекомендуется использовать более современные подходы, чем KenLM. Пакеты, такие как Hugging Face Transformers и различные архитектуры GPT, предоставляют мощные инструменты и предобученные модели, которые адаптируются под ваши задачи. Необходимо выбрать пакет исходя из ваших конкретных требований, объема данных и цели анализа. Поскольку технологии в NLP развиваются стремительно, стоит также следить за последними публикациями и новыми подходами в этой области.