У меня есть большой список известных фраз. Учитывая текст (скажем, твит), я хотел бы посмотреть, содержит ли он известную фразу из большого списка. Я уверен, что что-то подобное должно существовать (возможно, из новых когнитивных костюмов от IBM Watson/Microsoft Cortana или, может быть, что-то вроде Apache lucene). К сожалению, я не знаю названия этой проблемы, чтобы определить продукт, который ее решает :)
То, что вы пытаетесь сделать, является частью обработки естественного языка, и одним из важных инструментов для этого является Python Natural Language Toolkit ( nltk ).
Хорошую отправную точку можно найти в статье и сопоставлении блокнота Jupyter fuzzy-sentence-matching-python, в которой обсуждаются токенизация, нечувствительность к регистру, стоп-слова, формирование корней, лемматизация и указывают на частичное совпадение.
Процесс, который вам нужно будет выполнить, заключается в следующем:
Книга по использованию nltk доступна в Интернете, но это лишь одна из тысяч книг и статей по этому вопросу.
Это обычная задача поиска. Вам просто нужно сначала объединить все известные вам фразы в один поисковый запрос. С регулярными выражениями это проще всего сделать с помощью оператора чередования |
. Для поисковых систем с булевыми операторами используйте OR
.
Чтобы порекомендовать конкретную программу (поскольку это «Рекомендации по программному обеспечению»), попробуйте grep
. Вы можете создать регулярное выражение программно, а затем передать его с grep
помощью xargs
.