Сохранение обработанного данных на естественном языке

12

Недавно я начал экспериментировать с обработкой естественного языка (NLP), используя CoreNLP от Stanford , и мне интересно, каковы некоторые стандартные способы хранения проанализированных данных NLP для чего-то вроде приложения для анализа текста?

Один способ, который я подумал, может быть интересным, - сохранить дочерние элементы в виде списка смежности и эффективно использовать рекурсивные запросы (Postgres поддерживает это, и я обнаружил, что он работает очень хорошо)

Но я предполагаю, что, вероятно, существует много стандартных способов сделать это в зависимости от того, какой анализ проводится, который был принят людьми, работающими на местах в течение многих лет. Итак, каковы стандартные стратегии персистентности для проанализированных данных НЛП и как они используются?

Арсений Мурзенко
источник

Ответы:

3

Однажды я работал с инструментарием НЛП и столкнулся с проблемой, которую вы описали. Я думаю, что есть (по крайней мере) два подхода:

  • (неявный подход), используйте памятку

    В языках программирования, где функции являются объектами первого класса (такими как Lua, Python или Perl 1 ), автоматическое запоминание может быть реализовано путем замены (во время выполнения) функции ее вычисленным значением после вычисления значения для заданного значения. набор параметров.

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

  • (явно), используйте некоторую базу данных, будь то реляционная или ориентированная на документы, для хранения всех результатов, которые могут вас заинтересовать в будущем. Это требует большего внимания в начале, но окупится в долгосрочной перспективе.

Может быть интересного:


Редактировать: Еще одна вещь, которую я использовал в последнее время для многоступенчатых долгосрочных вычислений, - это структура рабочих процессов, которых насчитывается десятки . Дело не в настойчивости, но настойчивость - это шаг в рабочем процессе. Я пытаюсь использовать luigi для этого, и он приходит, например, с помощью вспомогательных классов Hadoop и Postgres, которые могут устранить много стандартного кода.

Мик
источник
2

Хорошая стратегия - использовать хорошую базу данных Reduce / Map, также известную как база данных NOSQL, например, MongoDB или CouchDB.
Эта база данных позволяет создавать простые кодированные правила, по которым сопоставляются термины и смежности, а также простые кодированные правила для сокращения (также «групповой») информации.

Вы можете начать здесь:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
источник