Вопрос или проблема
Предупреждение Я не специалист по данным. У меня есть ощущение, что я упускаю что-то очевидное или не знаю чего-то, и если это так, пожалуйста, будьте ко мне снисходительны!
Я хотел бы иметь возможность идентифицировать и извлекать части коротких строк, которые соответствуют шаблонам из установленного набора данных. Не уверен, какие лучшие методы 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). Ваши данные представляют собой размеченные примеры, что делает задачу супервайзед (с контролем). Ваша цель — создать модель, которая сможет извлекать соответствующие части строк на основе обучающего набора данных.
Предложения по методам
-
Нормализация и предварительная обработка данных:
- Убедитесь, что ваши данные чисты: удалите лишние пробелы, проверьте на наличие опечаток и единообразно используйте регистры.
- Вам может понадобиться токенизация и стемминг или лемматизация для улучшения обработки.
-
Обработка признаков:
- Вы можете использовать метод Bag of Words или TF-IDF для представления строк в виде векторов чисел.
- Рассмотрите возможность использования Word Embeddings (например, Word2Vec или GloVe) для учета семантики слов. Это позволит модели понимать контекст.
-
Модели для извлечения информации:
- Модели последовательной зависимости:
- Используйте LSTM (долгая краткосрочная память) или GRU (упрощенная единица) для обработки последовательностей и предсказания выходных данных на основе входных строк.
- Трансформеры:
- Более современные подходы могут включать архитектуры на основе трансформеров, такие как BERT или GPT. Эти модели показывают отличные результаты при задачах, связанных с пониманием контекста и извлечением информации.
- Модели последовательной зависимости:
-
Обучение модели:
- Разделите ваш набор данных на обучающие и тестовые данные.
- Обучите выбранную модель, используя ваши размеченные данные. Обязательно следите за переобучением, используя техники регуляризации.
-
Оценка качества модели:
- Используйте метрики, такие как Precision, Recall и F1-score для оценки вашей модели на тестовом наборе.
- Также можно рассмотреть возможность использования кросс-валидации для получения более надежной оценки.
-
Постобработка:
- После извлечения возможных
output
извлеченных данных, вам может понадобиться фильтрация или дополнительные шаги обработки, чтобы достичь необходимой точности.
- После извлечения возможных
Альтернативные подходы
Если вы ищете более простые решения, можете рассмотреть использование библиотек, таких как NLTK или SpaCy, для реализации правил:
- Используйте регулярные выражения для извлечения последовательностей, которые относятся к заданным шаблонам.
- Существует возможность определения кастомных правил с использованием регулярных выражений в сочетании с токенизацией, что может быть полезно для более простых случаев извлечения.
Заключение
Сочетание современных AI/ML подходов с традиционными методами обработки текста может дать вам очень хорошие результаты в этой задаче. Учитывая внимание к контексту, трансформеры, такие как BERT, могут быть особенно эффективными для извлечения информации из произвольных строк. Удачи в разработке вашей модели!