Как удалить дубликаты на основе сходства текста в строках в Pandas - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть набор заголовков новостей. Я хотел бы удалить дубликаты или очень похожие заголовки на основе текстового сходства с заголовками за последние десять дней. Для очень похожих заголовков я хочу сохранить самые ранние. Например, я сохраню "SECTION:BUSINESS; Business; Events; Pg.2" только для 2014-08-04.

Я думаю сделать объединение на основе даты и заголовка, где дата в течение последних десяти дней, что-то вроде этого (в выражении SQL):

create table df_joined as 
select a.*, b.date as date_b, b.Headline as Headline_b from 
df a inner join df[["Date", "Headline"]] b on a.date - b.date <= 10

Далее я могу вычислить меру подобия:

df_joined["Similarity"] = similar_function (df_joined.Headline, df_joined.Headline_b)

Затем, для каждой группы (date, headline), если какая-либо строка имеет сходство выше, чем выбранный тест, я отбрасываю всю группу. Наконец, я разрушаю группы.

Не уверен, как это сделать в Пандах. Спасибо!

Sample Data он

1 Ответ

1 голос
/ 09 апреля 2019

Вы смотрели в функцию pandas.Series.unique? Он возвращает массив без дубликатов и может обрабатывать строки.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.unique.html

...