Как очистить текст от шума по смыслу? Или разбить текст на смысловые блоки?
Добрый день!
Решал ли кто-то подобную задачу (на Python или вообще), можете поделиться опытом?
Есть массив текстов разговоров с клиентами по телефону. (Аудио, переведенное в текст. Для работы сейчас есть только текст).
Текст получился зашумлённым неинформативной частью.
То, что промаркировано, как речь клиента, на самом деле относится к одной из 3-х категорий:
1) Собственно речь клиента
2) Песня из мелодии при ожидании ответа абонента (Дима Билан, Григорий Лепс и другие исполнители)
3) Автоответчики ("абонент недоступен", "вне зоны действия сети" и т.д.)
Необходимо выделить собственно речь клиента.
Эти блоки в тексте могут меняться местами в произвольном порядке. Пробовал делать через составление словарей ключевых слов (характеристик типа текста) и подсчет их частоты, но получается трудоёмко и не очень точно. Если с автоответчиками, там хотя бы ограниченный набор ключевых слов, то как быть с песнями, вообще непонятно.
Подскажите пожалуйста, какие есть способы/алгоритмы очистки текста от шума или отделения части текста с другим смыслом, при том, что характеристики шума тоже формализованы не на 100%?
Тут нет заведомо правильного ответа. Попробуйте начать с нескольких тысяч примеров для каждого класса. Проверьте качество классификатора. Если качество недостаточно высокое, добавьте еще данных.
Сам недавно в этой теме рылся. Можно, например, вот это почитать https://arxiv.org/abs/1503.05543
Но мне кажется, что проще будет составить словари фраз\песен, и тупо повырезать их из текста.
Собственно речь клиента
1. (+1) Промаркируйте все фразы начала разговора клиентом.
2. (-1) С обратным знаком, промаркируйте все начала фраз автоответчика.
3. (ALL - ([1]+[2])) Остальное - будут музыка и песни.