Так что я пытаюсь найти и удалить все дубликаты из набора статей, прежде чем делать некоторые НЛП на корпусе.Я использую Spark 2.4 для обработки данных и LSH, поставляемый с SparkML
. Я попробовал метод, предложенный авторами LSH , выполняя само приближение сходства с одним набором данных, который работаетхорошо, за исключением того, что это оставляет меня, по иронии судьбы, с дубликатами дубликатов, например
+--------------------+--------------------+--------------------+
| datasetA| datasetB| JaccardDistance|
+--------------------+--------------------+--------------------+
|[7, Donald Trump ...|[3, Donald Trump ...| 0.0|
|[3, Donald Trump ...|[7, Donald Trump ...| 0.0|
|[3, Donald Trump ...|[4, Trump appear...|0.006849315068493178|
|[4, Trump appear...|[7, Donald Trump ...|0.006849315068493178|
|[4, Trump appear...|[3, Donald Trump ...|0.006849315068493178|
|[7, Donald Trump ...|[4, Trump appear...|0.006849315068493178|
|[5, The Priminist...|[6, Theresa May h...|0.011627906976744207|
|[6, Theresa May h...|[5, The Priminist...|0.011627906976744207|
|[1, Theresa May h...|[6, Theresa May h...|0.023255813953488413|
|[6, Theresa May h...|[1, Theresa May h...|0.023255813953488413|
|[5, The Priminist...|[1, Theresa May h...| 0.03448275862068961|
|[1, Theresa May h...|[5, The Priminist...| 0.03448275862068961|
+--------------------+--------------------+--------------------+
(примечание: первое число - это идентификатор, а остальное - текст)
Это здорово, если мне не нужнокак-то хранить только одну копию дубликатов.
Есть идеи?
Игрушечный корпус, который я использовал
Кстати, кто-нибудь знает охороший токенизатор, который работает на большинстве европейских языков?SparkML очень прост, то есть «Некоторая цитата» становится ['' Некоторая ',' цитата "']: (