У меня есть большое количество строк, содержащих название продукта и несколько других свойств (размер, объем, возраст и т. Д.). Но строки не стандартизированы вообще. Названия продуктов могут быть написаны с ошибками, объем может отличаться от нотации (0,5 л, 1/2 литра, 500 мл и т. Д.). Количество вариаций ограничено, хотя, например, всего несколько сотен продуктов. Какие инструменты я могу использовать для анализа каждой строки и сказать мне, содержит ли она определенные токены? Я предполагаю, что какой-то механизм обучения будет полезен, но я не уверен, какие инструменты будут предлагать именно это. Я посмотрел на ElasticSearch, но я не уверен, что это путь. Все мои данные в настоящее время находятся в базе данных PostgreSQL, и я также посмотрел на pg_grm. Опять же, не уверен, что это соответствует моей потребности.Нечеткое соответствие строк: какой инструмент?
Одним из решений, о котором я думал, является поддержание списка правильных ключевых слов и для каждой строки, видно, содержит ли строка какие-либо ключевые слова. Я не уверен, если это будет работать, и, если он будет, как эффективно и эффективно реализовать ее в PostGreSQL
EDIT Вот несколько примеров строк я пытаюсь извлечь ключевые слова из:
wine Bardolo red 1L 12b 12%
La Tulipe, 13* box 3 bottles, 2005
Great Johnny Walker 7CL 22% red label
Wisky Jonny Walken .7 Red limited editon
Я уже довольно много искал, но еще не нашел подходящего способа решения этой проблемы.
Возможно, анализ всей строки в виде ngram с использованием токенизатора 'ngram' будет работать для вас с помощью Elasticsearch? Это позволит нечеткое согласование подслов. –
Может быть, но я думаю, что мне нужно подстрочное нечеткое совпадение вместо подгоночного нечеткого соответствия. Будет ли это работать? –