Как оценить качество / достоверность текстовой информации?

Вопрос или проблема

У меня есть корпус текста (который можно использовать для обучения). Текст состоит из собственных имен, таких как названия улиц:

Бонд-стрит
Кресент Балмэйн
Уэй Паркес
Драйв Баррин
Гордон-стрит
Улица Маркузе Кларк

Я хочу обнаружить возможные орфографические ошибки (т.е. оценить качество / надежность некоторых текстов, таких как названия улиц).

Идея состоит в том, что последовательность строк можно оценивать на основе вероятности того, что определенные строки встречаются в определенном порядке (я полагаю, что модели последовательность-к последовательности и модели марковских цепей сильно основаны на этой идее).

Таким образом, даже если такая последовательность, как Улица Маркузе Кларк, может встречаться редко, наблюдаемые последовательности строк, такие как Кла, лар, арк, рке, могут встречаться чаще, чем (предполагая орфографическую ошибку, такую как Улица Маркузе Карк) Куа, кар, арк, рке.

Вопрос: Существуют ли модели для оценки вероятности того, что некоторая последовательность строк является “истинной”, учитывая некоторые обучающие данные? Моя цель следующая:

Ввод: Улица -> Вывод модели: очень вероятно (высокая вероятность того, что она может встречаться)

Ввод: Ултца -> Вывод модели: очень маловероятно (низкая вероятность…)

Ввод: Балмэйн -> Вывод модели: вероятно (приемлемая вероятность того, что она может встречаться)

Ввод: Бувмэйн -> Вывод модели: маловероятно (низкая вероятность…)

В зависимости от того, что именно вы хотите / можете сделать, посмотрите на расстояние Левенштейна в некоторых системах оно реализовано как “Редакционное расстояние”.

Я не знаю о каких-либо конкретных методах / библиотеках, но я много работаю с крупными предварительно обученными трансформерными моделями, и вы определенно можете рассчитать вероятность того, что токен или серия токенов появится согласно модели, которая обучалась на большом количестве текста.

Вот пост на SO, показывающий, как сделать именно это.

Теперь это даст вам только вероятности из выбранной вами предварительно обученной модели, я предполагаю, что следующим вашим шагом будет найти какой-то умный способ классификации, является ли это действительным входом на основе этих вероятностей.

Вы можете просто на глаз оценить это, но если вы обнаружите, что это не работает, я бы рекомендовал добавить подсказку, чтобы помочь модели понять задачу, которую она пытается выполнить.

Или вы могли бы просто размечать кучу примеров и дообучить модель, я бы рекомендовал посмотреть на Обучение с использованием образцов (PET) как вариант избежать значительной задания по разметке, вот гитхаб.

Существует другая версия PET под названием “ADAPET“, которая пытается улучшить PET, на мой взгляд, она немного капризная и подвержена переобучению, в зависимости от задачи, но я думаю, что способ, которым настроены потери, на самом деле может быть очень подходящим для того, что вы пытаетесь сделать, поэтому также стоит это проверить, вот гитхаб.

Ответ или решение

Оценка качества и надежности текстовой информации: Обнаружение ошибок в написании названий улиц

Введение

При работе с текстовыми данными, такими как названия улиц, крайне важно оценивать качество информации и выявлять возможные ошибки написания. Это необходимо для обеспечения надежности и точности информации, используемой в различных приложениях, таких как системы навигации, базы данных и картографические сервисы. В данной статье мы рассмотрим методы и модели, которые могут помочь в оценке вероятности нахождения "истинных" последовательностей текста на основе предоставленных данных.

Критерии оценки качества текстовой информации

  1. Лексическая корректность: Проверка правильности написания слов в тексте.
  2. Структурная целостность: Оценка последовательности слов и их логической связи.
  3. Контекстуальная релевантность: Оценка того, насколько текст соответствует ожиданиям пользователей и принятым нормам.

Модели для оценки вероятности последовательностей

Для вашей задачи по обнаружению ошибок в написании названий улиц можно использовать несколько подходов:

  1. Расстояние Левенштейна: Этот метод позволяет измерять количество операций (вставка, удаление, замена), необходимых для преобразования одной строки в другую. Вы можете использовать это расстояние, чтобы оценить, насколько близки варианты написания (например, "Stxeet" и "Street") друг к другу. Чем меньше это расстояние, тем более вероятно, что слово является ошибкой.

  2. Модели на основе марковских цепей: Используйте марковские модели для определения вероятности появления определенной последовательности токенов (слов). Эти модели основаны на анализе последовательностей в ваших тренировочных данных. Например, если "Marcuse Clarke Street" встречается редко, но "Marcuse" как отдельное слово часто предшествует "Clarke", это может указывать на высокую вероятность ошибки.

  3. Предобученные трансформерные модели: Подходы с использованием моделей, таких как BERT или GPT, позволяют оценить вероятность следующего токена в последовательности. Вы можете использовать такие модели для оценки вероятности валидности слов, основываясь на контексте, в котором они встречаются. Например, ввод "Street" может дать высокую вероятность, тогда как "Stxeet" — низкую.

  4. Обучение с использованием меток: Если есть возможность, вы можете подготовить размеченные данные, где верные и ошибочные написания будут четко обособлены. Методы вроде Pattern Exploit Training (PET) могут помочь в уменьшении объема работы по разметке и улучшении точности модели.

Практическая реализация

Используя библиотеки, такие как Hugging Face Transformers, вы можете легко загрузить предобученные модели и начать вычисление вероятностей:

from transformers import pipeline

model = pipeline("fill-mask")

# Пример ввода
input_text = "Balmain is a popular [MASK] in the city."
results = model(input_text)

for result in results:
    print(f"Слово: {result['token_str']}, Вероятность: {result['score']:.4f}")

Этот код поможет вам получить вероятности, соответственно позволяя оценить, насколько высока вероятность того или иного токена.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...