Как увеличить скорость использования нечеткого сопоставления в кадре данных?

1

Я хочу использовать нечеткое сопоставление, чтобы проверить, содержат ли dataframe ключевые слова.

Однако apply его очень медленно.

Есть ли более быстрые методы?

Можем ли мы использовать str или re?

import regex

result = df['sentence'].apply(lambda x: regex.compile('(keyword){e<4}').findall(x)) #slow

Большое спасибо.

Теги:
pandas
fuzzy-search

1 ответ

2
Лучший ответ

Почему вы компилируете внутри приложения? Это буквально побеждает его цель. Кроме того, лучший способ ускорить apply - не apply.

Без контекста того, что вы на самом деле пытаетесь сопоставить, я представляю вам:

p = regex.compile('(keyword){e<4}')
result = [p.findall(x) for x in df['sentence']]

Мои тесты показывают, что соответствие регулярному выражению, основанное на списке, заменяет str методы с точки зрения производительности. Ну, возьмите это с солью, потому что она всегда зависит от ваших данных и того, что вы пытаетесь сопоставить.

Вы можете захотеть использовать re.search вместо findall, если хотите просто одно совпадение (для большей производительности).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню