Я пишу инструмент для индексации документа. У меня есть длинный список из сотен, возможно, тысяч фиксированных шаблонов. Например, мой индекс может выглядеть как {"cat training":"p.27", "cat handling":"p.29", "cat":"p.15", "dog training":"p.62", "dog":"p.60"}
и т. Д.
Теперь я хочу найти в моем тексте (для аргумента, каждый абзац представляет собой одну строку) все экземпляры любой подстроки в моем индексе. (Во время поиска я отсортирую ключи по длине, как показано, чтобы «кошачья тренировка» соответствовала перед «кошкой»).
Еще одно осложнение состоит в том, что я хочу, чтобы совпадения происходили в словеграницы. Т.е. я не хочу, чтобы «catch» соответствовал «cat».
Есть ли питонский способ сделать это? Мое текущее решение состоит в том, чтобы сканировать исходную строку, слово за словом, а затем пытаться сопоставить начало строки со всем моим индексом. Это работает, но довольно медленно.