Извлечение вывода из строк на основе обучающего набора

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

Предупреждение Я не специалист по данным. У меня есть ощущение, что я упускаю что-то очевидное или не знаю чего-то, и если это так, пожалуйста, будьте ко мне снисходительны!

Я хотел бы иметь возможность идентифицировать и извлекать части коротких строк, которые соответствуют шаблонам из установленного набора данных. Не уверен, какие лучшие методы ML/AI подойдут для этой задачи, но я уверен, что они существуют!

Пример: у меня есть набор данных, в котором есть исходная строка src, и часть строки, которая указывает на “когда”, обсуждаемое в исходной строке, обозначенная как output ниже:

[
    {
        "src": "Вечеринка у Джима на семнадцатом", 
        "output": "на семнадцатом"
    },
    {
        "src": "Я позвоню тебе во вторник по Zoom, чтобы обсудить варианты",
        "output": "вторник"
    },
    {
        "src": "А как насчет никогда, подходит ли тебе никогда?",
        "ouput": "никогда"
    },
    {
        "src": "Нет парковки в третий четверг каждого месяца",
        "output": "третий четверг каждого месяца"
    ...
]

Я хотел бы иметь возможность обучить модель для поиска и извлечения наиболее вероятного output из произвольной входной строки.

Вопросы: Какие методы ML/AI могут быть применены к такой задаче? Или альтернативы, возможно, что-то более простое из NLTK или что-то в этом роде?

Кажется, это задача с контролируемым обучением, поскольку естьSolid corpus of training data, но это не сводится к конкретным классификациям ИЛИ к непрерывному числовому значению… по крайней мере, не насколько я знаю!

Что-то вроде Word2Vec и NLTK, NER, кажется, сосредоточено на отдельных словах, но, возможно, оно может что-то продвинутое сделать с n-grams?

Примечание: Меня не очень интересует “когда”, это просто пример. Мой набор данных будет иметь различные типы значений output.

Моя задача очень похожа на ту, что была описана в этом вопросе 8 лет назад. Идентификация и классификация с использованием машинного обучения на основе содержимого строк: Общие советы

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

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

Конечно! Давайте рассмотрим вашу задачу по извлечению частей строк из заданного набора данных, где вам необходимо найти и извлечь наиболее вероятные значения (output) из произвольной входной строки.

Введение

Вы правы, что это задача, которую можно решить с помощью методов машинного обучения (ML) и обработки естественного языка (NLP). Ваши данные представляют собой размеченные примеры, что делает задачу супервайзед (с контролем). Ваша цель — создать модель, которая сможет извлекать соответствующие части строк на основе обучающего набора данных.

Предложения по методам

  1. Нормализация и предварительная обработка данных:

    • Убедитесь, что ваши данные чисты: удалите лишние пробелы, проверьте на наличие опечаток и единообразно используйте регистры.
    • Вам может понадобиться токенизация и стемминг или лемматизация для улучшения обработки.
  2. Обработка признаков:

    • Вы можете использовать метод Bag of Words или TF-IDF для представления строк в виде векторов чисел.
    • Рассмотрите возможность использования Word Embeddings (например, Word2Vec или GloVe) для учета семантики слов. Это позволит модели понимать контекст.
  3. Модели для извлечения информации:

    • Модели последовательной зависимости:
      • Используйте LSTM (долгая краткосрочная память) или GRU (упрощенная единица) для обработки последовательностей и предсказания выходных данных на основе входных строк.
    • Трансформеры:
      • Более современные подходы могут включать архитектуры на основе трансформеров, такие как BERT или GPT. Эти модели показывают отличные результаты при задачах, связанных с пониманием контекста и извлечением информации.
  4. Обучение модели:

    • Разделите ваш набор данных на обучающие и тестовые данные.
    • Обучите выбранную модель, используя ваши размеченные данные. Обязательно следите за переобучением, используя техники регуляризации.
  5. Оценка качества модели:

    • Используйте метрики, такие как Precision, Recall и F1-score для оценки вашей модели на тестовом наборе.
    • Также можно рассмотреть возможность использования кросс-валидации для получения более надежной оценки.
  6. Постобработка:

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

Альтернативные подходы

Если вы ищете более простые решения, можете рассмотреть использование библиотек, таких как NLTK или SpaCy, для реализации правил:

  • Используйте регулярные выражения для извлечения последовательностей, которые относятся к заданным шаблонам.
  • Существует возможность определения кастомных правил с использованием регулярных выражений в сочетании с токенизацией, что может быть полезно для более простых случаев извлечения.

Заключение

Сочетание современных AI/ML подходов с традиционными методами обработки текста может дать вам очень хорошие результаты в этой задаче. Учитывая внимание к контексту, трансформеры, такие как BERT, могут быть особенно эффективными для извлечения информации из произвольных строк. Удачи в разработке вашей модели!

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

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