Форум сайта python.su
Есть табличка коментариев, в этой табличке есть записи , у которых поле текст частично дублируется(т.е. один и тот же комент, в котором разные знаки препинания и их разное количество).
Нужно почистить такие дублированные коменты.
Подскажите,пожалуйста, как сделать это по умному?
Офлайн
Сделать нормализацию строк (выкинуть все кроме символов и пробелов, перервести в нижний регистр и т.п.).
Потом посортировать и вырезать если следующий = текущему.
Если текст немного отличается, то можно комменты нарезать на куски, и искать эти куски одной строки в кусках другой строки - таким образом можно выявить % пресечения, т.е. на сколько строка похожа. Ну и например вырезать те что совпадают на > 90%
Офлайн
buddha
Подскажите,пожалуйста, как сделать это по умному?
pip install python-Levenshtein
from Levenshtein import distance def calc_distance(comments, sample): for item in comments: if distance(sample, item) < 5: return item
Отредактировано Alen (Ноя. 25, 2014 22:04:24)
Офлайн
Если задача действительно научная или около-научная и необходим хороший результат по быстродействию и возможности настройки, то я бы рекомендовал использовать нечеткую логику. Вариантов построить систему просто масса… Для понимания процесса рекомендую глянуть в книгу Мелихов А.Н. Ситуационные советующие системы с нечеткой логикой.
И да, действительно, самое интересное проектировать систему, если шаблонов или принципов выделения не существует да и классификационные признаки или неявные или отсутствуют…
P.S. Вообще по задачам такого класса написано множество работ. Присутствовал на 3 защитах. Там задачи такого класса решались вообще совершенно различными способами. При этом с разной эффективностью и разной скоростью. Самое интересное, что данные соискателями подбирались так, чтобы их метод был наиболее эффективным
Отредактировано 4kpt_II (Ноя. 24, 2014 23:35:30)
Офлайн
Спасибо, решили с помощью python-Levenshtein
Офлайн