LINUX.ORG.RU

Извлечение фактов из неструктурированного текста

 , ,


1

2

Есть текст сообщений.

Вопрос: можно ли извлечь «факты» в «нормализованной форме» из такого текста с помощью автоматизированного лингвистического анализа? Тематика узкая - фитнес.

Извлекать нужно: виды упражнений, информацию о питании, вес (массу), время

Или лучше regexов понаписать и поиск по известным словам?

Сообщения такого плана:

  • Вес 56 килограммов.
  • Взвесился 65 килограмм
  • Взвесилась только что, 54 кило
  • Масса 65 килограмм
  • Пожал 90, два подхода по 8 раз.
  • Сегодня в обед съела салат из томатов и огурцов со сметаной, чай, бутерброд с колбасой
  • Прием пищи: макароны по-флотски, чай, суп с фрикадельками
  • Вчера съела торт кремовый две тарелки
  • Съел салат весенний 200 грамм. В нём 200 килокалорий на 100 граммов.
  • Съел утром 200 килокалорий
  • Вечером на обед были язычки колибри. В них 80 грамм углеводов, 10 граммов белка, жиров 5 грамм и 2 гр. золы. Всего 36 калорий
  • Манная каша - 56 калорий
  • жим лежа 60 пять по шесть
  • эллипс 8 минут за 7.55
  • блок пять по десять 45,45,45,45,40
  • трицепс 40кг 3 по 10
  • жим пустой гриф 1 на 30
  • приседы 3х6 60кг + 2х6 65кг

Или иметь мозги с нейронкой, или регами. Готового софта я не знаю - я бы за ml взялся. Ну наклепай на регах.

cnupm ()
Ответ на: комментарий от cnupm

я бы за ml взялся. Ну наклепай на регах.

А зачем пушкой по воробьям то стрелять, если задача на регах решается? Ради спортивного интереса что-ли?

aiabout ()
Ответ на: комментарий от aiabout

если задача на регах решается?

Регекспами получится же не очень?

«Хотела съесть кило мяса, а съела 3 морковки» - как посчитается? мясо, морковь, 3 килокалории?

С другой стороны, можно неоднозначные фразы давать человеку на проверку

Интересно, такое щас кто-нибудь умеет нормально парсить роботами?

vmx ★★ ()
Ответ на: комментарий от vmx

Просто Вы написали «или - или», я подумал что Вы рассматриваете регексы как альтернативу. А то что Вы пишете, это слишком трудная задача, то что там про ИИ говорят, это все сказки, нет никаких реальных достижений там по распознаванию текста.

Почему нельзя заставлять пользователя заставлять строгие формы, где нет неоднозначности?

aiabout ()
Ответ на: комментарий от aiabout

заставлять строгие формы

заставлять заполнять строгие формы //fixed

aiabout ()

А сколько этих сообщений всего?

psv1967 ★★★★★ ()

Приходится констатировать, что пошла очередная мода на ИИ

dave ★★★★★ ()
Ответ на: комментарий от dave

А когда была предыдущая?

PS: это же современный тренд: не осилил алгоритм - натренеруй нейросеть.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от vmx

Интересно, такое щас кто-нибудь умеет нормально парсить роботами?

Яндекс Гугль Еще тысяча фраз

А что? Многие умеют, вопрос в том, что автор может в адекватные сроки подкинуть. По егу топику - только реги.

cnupm ()
Ответ на: комментарий от cnupm

Сроков нет - нужно принципиальную возможность оценить.

У яндекса библиотека даже на гитхабе для такой задачиесть: тамито парсер называется.

Про заставлять заполнять строгие формы по этой теме есть личный опыт - меня хватило на месяц. Хочется текст наговаривать...

ahdenchik ()
Ответ на: комментарий от RazrFalcon

Предыдущая мода была где-то на рубеже 80-х и 90-х. Везде трещали о компьютерах пятого поколения. Их очень ждали (??). Все взгляды прогрессивного человечества были устремлены на Японию. Однако, после дикого провала японцев об ИИ стали тише говорить. Гора родила мышь.

Потом где-то во второй половине 90-х был небольшой осторожный интерес к нейросетям, но больше к персептронам, немного к fuzzy. Только энтузиазма было уже сильно меньше, потому что многие относились скептически, помня о неудачи японцев.

Дальше не следил. Стало неинтересно

dave ★★★★★ ()
Ответ на: комментарий от dave

Ну меня тогда еще не было.

Вангую, что через пару лет тоже заглохнет, как те же 3d принтеры и прочий хайп. Каких-то реальных применений пока ему нету.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от dave

Ну по мне так сейчас идёт очередная волна с дип лёрниногом и большими сетями. Просто раньше такой мощи не было.

ebantrop ()
Ответ на: комментарий от psv1967

Думаю, ассортимент весь представлен. Но существительные, которые там фигурируют... Штук 100 для упражнений и штук 500 для еды.

ahdenchik ()
Ответ на: комментарий от dave

но больше к персептронам
На фоне роста популярности нейронных сетей в 1969 году вышла книга Марвина Минского и Сеймура Паперта, которая показала принципиальные ограничения перцептронов. Это привело к смещению интереса исследователей искусственного интеллекта в противоположную от нейросетей область символьных вычислений

если во второй половине 90-х и был какой то интерес к ним, то не со стороны ученых, а со стороны хомячков. Скорей всего это был просто хайп на фоне роста пузыря доткомов

aiabout ()
Ответ на: комментарий от cnupm

Яндекс Гугль Еще тысяча фраз

Ну, может они и могут парсить и улавливать смысл, но от пользователей это старательно скрывают.

С калориями и кочками лень придумывать, попробовал поискать «трамп пожал руку меркель», «трамп не пожал руку меркель», «трамп пожал руку не меркель» и «трамп не пожал руку не меркель».

На первых страницах практически одно и то же. И об одном и том же событии. Хотя, если бы результат отдавал человек, наверняка выдал бы немного другое

vmx ★★ ()
Ответ на: комментарий от ahdenchik

При чем тут ассортимент? Тут проблема если у тебя этого добра всего несколько сотен или тысяч фраз, то скорее всего можешь забить на НН.

Единственный выход тогда, это найти большой тематический корпус текстов и на нем тренироваться, или готовый word embeddings типа GloVe найти.

Ну а второй гимор это примеры подсовывать, типа вот показатель и вот это атрибут его, а вот это упражнение. Аналогично как Part-of-speech tagging любой работает.

psv1967 ★★★★★ ()
Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от cnupm

что контекстная реклама? Она такая же тупая как и поиск. Берет контент со страницы, определяет тематику по контенту, тупо по плотности вхождения слов, а затем просто показывает объявления связанные с этой тематикой.

aiabout ()
Ответ на: комментарий от psv1967

Единственный выход тогда, это найти большой тематический корпус текстов и на нем тренироваться, или готовый word embeddings типа GloVe найти.

Да и с ним у сетки будет немало параметров же. По крайней мере если подойти в лоб и скормить текст как матрицу из векторов отдельных слов (и обрабатывать какой-нибудь рекуррентной сеткой).

alex4321 ()
Последнее исправление: alex4321 (всего исправлений: 1)

открываешь биткойн-faucet и пару «сайтов для успешных», и делаешь хитрую капчу и табличу для записи результата. разработка системы будет стоить раз в 100 больше чем ты потратишь на идиотов даже за полвека.

upcFrost ★★★★★ ()

тебе нужен glr парсер, можешь взять тамиту от яндекса, можешь загуглить несколько реализаций, можешь набыдлокодить сам, для разминки. да, надо нашлепать некоторое количество шаблонов, да, это несколько муторно. нет, другого способа нет. нет, «нейронка» не особо поможет, все эти nlp про другое.

/thread

Rastafarra ★★★ ()
Ответ на: комментарий от Rastafarra

Спасибо! Думаю, да, это оно.

А реализации (кроме тамиты, которая оставляет впечатление недоделки-заманухи в яндекс) нормальные есть? Желательно такие, которые с чистым C слинкуются.

ahdenchik ()
Ответ на: комментарий от ahdenchik

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

алгоритм простой:

    initialize();
    correct();
    markup();
    serialize();
    transform();
    save();

у тебя будут ошибки, поэтому нужен словарик. слов на самом деле будет не много, поэтому даже спеллчекер будет лишним (потому что подсказывает так себе). потом нашлепать кучу markup-ов, у меня это получается xml, потом его разбираем в классики и сохраняем.

Rastafarra ★★★ ()
Последнее исправление: Rastafarra (всего исправлений: 1)
Ответ на: комментарий от Rastafarra

Что такое nlp?

Где почитать об этом фундаментальное? Хабр перерыл - там только готовые примеры библиотек нашлись.

ahdenchik ()

поищи на просторах этих самых интернетов, (если память не изменяет) «невод» - датамайнинг от рос.оборонки :-)

MKuznetsov ★★★★★ ()
Ответ на: комментарий от ahdenchik

natural language processing конечно.

и что самое смешное, тебе это знание нифига не поможет. почитать конечно стоит, но...

Rastafarra ★★★ ()
Ответ на: комментарий от ahdenchik

Что такое HH?

обсуждаемые сети.

Альтернатива для таких ситуаций CRF(+) (есть многочисленные реализации прямо на страничке педии https://en.wikipedia.org/wiki/Conditional_random_field).

Все они по образцу делают tagging слов в последовательности. Их и встраивают во всякие автоматические решатели-узнаватели для выбора параметров в формах. (в принципе неплохо работает в той же Karma(RDF) матча схемы записей данных)

Возможно CRF моделей понадобиться несколько примененных последовательно: один распознает «это слово показатель», второй «это слово единицы измерения при слове распознанном как показатель», третий «это слово упражнение», потом уровень типа «это показатель этого упражнения» и т.п.

psv1967 ★★★★★ ()
Ответ на: комментарий от alex4321

скормить текст

очень короткие тексты тут предполагаются

psv1967 ★★★★★ ()

POS + набор правил. Задача простая, мудрить в ней нечего.

Solace ★★ ()
Ответ на: комментарий от aiabout

Эм. Персептроны и современные сети все-таки разные понятия. И алгоритм обучения у них тоже разный.

Solace ★★ ()
Ответ на: комментарий от Solace

Нет никаких «современных» нейросетей. Все сети, которые существуют, родом из 60-х годов прошлого века, в том числе и персептрон.

aiabout ()
Ответ на: комментарий от aiabout

Все сети, которые существуют, родом из 60-х годов прошлого века, в том числе и персептрон.

Что-то я не помню статей про CNN/LSTM/GAN родом из 60-х.

Solace ★★ ()

Кстати, ТС, чтобы не пилить велосипеды - можешь попробовать вот это, Самсунг недавно показал:

https://github.com/zy4kamu/Coda

Solace ★★ ()
Ответ на: комментарий от aiabout

«Все сети, которые существуют, родом из 60-х годов прошлого века» Рекуррентные? Свёрточные (под задачу может подойти 1-мерная свёртка с векторизацией каким-нибудь word2vec, например)? Впрочем, да - как минимум первые - не новы, но не 60-х :-)

alex4321 ()
Ответ на: комментарий от alex4321

Впрочем, да - как минимум первые - не новы, но не 60-х :-)

Перцептрон © предложен Розенблаттом в 1957 году, реализован в виде электронной машины «Марк-1» в 1960 году.

P.S. Ну «не влазили» современные свёрточные сети в «Марк-1» :)

quickquest ★★★★★ ()

У тебя задача кластеризации. По заранее известным правилам!
Пиши словоформы и делай поиск.

Shadow ★★★★★ ()
Ответ на: комментарий от quickquest

Перечитай коммент что ли. Моё «первые» относилось к рекуррентным.

з.ы. да и вроде что-то похожее на свёрточные пытались приюзать в 80-е же. Читай - может идеи и не нова, но не 60-х годов :-)

alex4321 ()
Ответ на: комментарий от Solace

Непонятно почему разработка идёт не в самсунговском репозитории. Откуда вы узнали об этом проекте?

ahdenchik ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.