Нахождение, как подобные две строки

Начиная с Spark 1.6 вы можете использовать функцию pivot на GroupedData и предоставить обобщенное выражение.

pivoted = (df
    .groupBy("ID", "Age")
    .pivot(
        "Country",
        ['US', 'UK', 'CA'])  # Optional list of levels
    .sum("Score"))  # alternatively you can use .agg(expr))
pivoted.show()

## +---+---+---+---+---+
## | ID|Age| US| UK| CA|
## +---+---+---+---+---+
## |X01| 41|  3|  1|  2|
## |X02| 72|  4|  6|  7|
## +---+---+---+---+---+

Уровни могут быть опущены, но если они могут повысить производительность и служит в качестве внутреннего фильтра.

Этот метод по-прежнему относительно медленный, но, конечно, бит вручную передает данные вручную между JVM и Python.

33
задан Nick Fortescue 23 February 2009 в 12:39
поделиться

4 ответа

Хорошо, таким образом, стандартные алгоритмы:

1) Расстояние Хемминга , Только хорошее для строк той же длины, но очень эффективное. В основном это просто считает количество отличных символов. Не полезный для нечеткого поиска текста естественного языка.

2) расстояние Levenstein . Расстояние Levenstein измеряет расстояние с точки зрения количества "операций", требуемых преобразовать одну строку другому. Эти операции включают вставку, удаление и substition. Стандартный подход вычисления расстояния Levenstein должен использовать динамическое программирование.

3) Обобщенный Levenstein / (Damerau†“расстояние Левенштейна) Это расстояние также учитывает перемещения символов, одним словом, и является, вероятно, расстоянием редактирования, самым подходящим для нечеткого соответствия вручную-введенного-текста. Алгоритм для вычислений расстояния немного более включен, чем расстояние Levenstein (обнаруживающий перемещения, не легко). Наиболее распространенные реализации являются модификацией алгоритм bitap (как grep).

В целом Вы, вероятно, хотели бы считать реализацию третьей опции реализованной в своего рода ближайшем соседнем поиске на основе k-d дерева

35
ответ дан 27 November 2019 в 18:33
поделиться

Damerau-расстояние-Левенштейна подобно расстоянию Левенштейна, но также и включает перемещение с двумя символами. (связанная) страница Википедии включает псевдокод, который должен быть довольно тривиальным для реализации.

4
ответ дан 27 November 2019 в 18:33
поделиться
  • расстояние Levenstein
  • метафон soundex
  • Расстояния Хемминга
3
ответ дан 27 November 2019 в 18:33
поделиться
2
ответ дан 27 November 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: