Как отфильтровать связанные строки в PHP? - PullRequest
2 голосов
/ 02 ноября 2019

Я создаю новый агрегатор для себя. Тем не менее, я не могу понять, как избавиться от подобных названий из списка статей. Вот несколько примеров:

Google has officially purchased Fitbit for $2.1 billion
Pixel Watch or not, Fitbit can't save Google's failing Wear OS
Samsung’s latest W series premium device will likely launch this month
Google acquires Fitbit for $2.1 billion, hints at future own-brand wearable
It’s official: Google is buying Fitbit for $2.1 billion
Android 10 rolling out for OnePlus 6T
Google jumps into the wearable space with $2.1 billion acquisition of Fitbit
Google Home app gets a UI refresh and new Cast controls with version 2.15
Google's buying Fitbit: Here's what happens to your Fitbit data
Google Home app 2.15 gets a simpler UI, new media playback cards, and event history
Xiaomi Mi CC9 Pro will be powered by the Snapdragon 730G SoC
Whatsapp implements fingerprint lock for Android

Теперь, как вы можете видеть, есть много повторений новостей о приобретении Fitbit компанией Google. В таких случаях я хотел бы только показать первую статью по этой теме и избавиться от остальных.

В идеале я хотел бы получить список статей как можно ближе к приведенному ниже:

Google has officially purchased Fitbit for $2.1 billion
Pixel Watch or not, Fitbit can't save Google's failing Wear OS
Samsung’s latest W series premium device will likely launch this month
Android 10 rolling out for OnePlus 6T
Google Home app gets a UI refresh and new Cast controls with version 2.15
Google's buying Fitbit: Here's what happens to your Fitbit data
Xiaomi Mi CC9 Pro will be powered by the Snapdragon 730G SoC
Whatsapp implements fingerprint lock for Android

Обратите внимание, что новости о Google Home также повторялись дважды. Таким образом, он также был удален из списка.

Похоже, я мог бы использовать функции similar_text() и levenshtein() для определения сходства двух строк. Я перебрал названия и использовал levenshtein($previous_title, $current_title) для вычисления расстояния. Вот некоторые из моих результатов, которые показывают, что я не могу полагаться на эти функции:

Google to bring Pixel 4 voice Recorder app to older Pixels | Xiaomi Mi CC9 Pro will be powered by the Snapdragon 730G SoC = 50
It’s official: Google is buying Fitbit for $2.1 billion | Google acquires Fitbit for $2.1 billion, hints at future own-brand wearable = 58

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

Как получить более точные результаты, отфильтровывая похожие заголовки?

Спасибо.

...