Как я могу использовать НЛП для разбора ингредиентов рецепта? - PullRequest
23 голосов
/ 15 октября 2008

Мне нужно разобрать ингредиенты рецепта по количеству, размеру, номенклатуре и описанию, как это применимо к линии, такие как 1 стакан муки, кожура 2 лимонов и 1 стакан коричневого сахара в упаковке и т. Д. Что было бы лучшим способом делая это? Я заинтересован в использовании python для проекта, поэтому я предполагаю, что использование nltk - лучшая ставка, но я открыт для других языков.

Ответы [ 5 ]

24 голосов
/ 12 августа 2011

Я на самом деле делаю это для своего сайта, который теперь является частью проекта с открытым исходным кодом для использования другими.

Я написал пост в блоге о моей технике, наслаждайтесь!

http://blog.kitchenpc.com/2011/07/06/chef-watson/

7 голосов
/ 13 сентября 2018

The New York Times столкнулась с этой проблемой, когда они анализировали свой архив рецептов. Они использовали технику НЛП, называемую случайным полем с линейно-цепочечным условием (CRF). Это сообщение в блоге дает хороший обзор:

Они открыли свой код, но быстро отказались от него. Я поддерживаю самую последнюю версию и я написал немного о том, как я его модернизировал.

Если вы ищете готовое решение, несколько компаний предлагают в качестве услуги разбор ингредиентов:

5 голосов
/ 03 марта 2011

Полагаю, прошло несколько лет, но я подумал о том, чтобы сделать что-то подобное сам, и натолкнулся на это, так что подумал, что могу нанести удар в случае, если это пригодится кому-либо еще в f

Даже если вы говорите, что хотите разобрать бесплатный тест, большинство рецептов имеют довольно стандартный формат для своих списков рецептов: каждый ингредиент находится на отдельной строке, точная структура предложений редко бывает так важна. Диапазон вокаба также относительно невелик.

Одним из способов может быть проверка каждой строки на наличие слов, которые могут быть существительными и словами / символами, выражающими количество. Я думаю, что WordNet может помочь с определением, является ли слово существительным или нет, но я не использовал его раньше. В качестве альтернативы, вы можете использовать http://en.wikibooks.org/wiki/Cookbook:Ingredients в качестве списка слов, хотя, опять же, я не знаю точно, насколько он исчерпывающий.

Другая часть - распознавать количества. Они бывают нескольких разных форм, но достаточно мало, чтобы вы могли создать список ключевых слов. В частности, убедитесь, что у вас есть хорошие сообщения об ошибках. Если программа не может полностью проанализировать строку, попросите ее сообщить вам, что это за строка, а также то, что она обнаружила / не распознала, чтобы вы могли соответствующим образом настроить списки ключевых слов.

Aaanyway, я не гарантирую, что все это будет работать (и почти наверняка это не будет на 100% надежно), но именно так я бы начал подходить к проблеме

3 голосов
/ 20 октября 2008

Это неполный ответ, но вы собираетесь написать произвольный текстовый анализатор, который, как вы знаете, нетривиален:)

Некоторые способы обмана, используя специфические для кулинарии знания:

  1. Составьте списки слов для «прилагательных» и «глаголов» и отфильтруйте их
    1. единицы измерения образуют замкнутый набор, используя слова и сокращения, такие как {L., c, cup, t, dash}
    2. инструкция - порезать, нарезать кубиками, приготовить, очистить. После этого почти наверняка будут ингредиенты
  2. Помните, что вы в основном ищете существительные, и вы можете взять помеченный список не существительных (например, из WordNet) и отфильтровать их.

Если вы более амбициозны, посмотрите в NLTK Book главу о парсерах.

Удачи! Это звучит как практически выполнимый проект!

0 голосов
/ 15 октября 2008

Можете ли вы быть более конкретным, что ваш вклад? Если у вас просто есть такой ввод:

1 cup flour
2 lemon peels
1 cup packed brown sugar

Нетрудно разобрать его без использования НЛП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...