Когда дело доходит до безопасности хранимые процедуры намного более безопасны. Некоторые утверждали, что весь доступ будет через приложение так или иначе. Вещь, которую забывают многие люди, состоит в том, что большинство нарушений защиты происходит из компании. Думайте о том, сколько разработчиков знает "скрытое" имя пользователя и пароль для Вашего приложения?
кроме того, как MatthieuF указал, производительность может быть очень улучшена из-за меньшего количества распространений в прямом и обратном направлениях между приложением (является ли это на рабочем столе или веб-сервере), и сервер базы данных.
, По моему опыту, абстракция модели данных через хранимые процедуры также значительно улучшает пригодность для обслуживания. Как кто-то, кто должен был поддержать много баз данных в прошлом, это - такое облегчение, когда столкнуто с необходимым образцовым изменением, чтобы быть в состоянии просто изменить хранимую процедуру или два и иметь изменение быть абсолютно очевидным для ВСЕХ внешних приложений. Много раз Ваше приложение не является единственным, указал на базу данных - существуют другие приложения, сообщая, что решениями, и т.д. настолько разыскивающими все те затронутые точки, может быть стычка с открытым доступом к таблицам.
я также помещу регистрации плюс столбец для помещения программирования SQL в руках тех, кто специализируется на нем, и для SPS, делающего его намного легче изолировать и тестировать/оптимизировать код.
одна оборотная сторона, которую я вижу, - то, что много языков не позволяют передачу параметров таблицы, так передавая неизвестное число, значения данных могут быть раздражающими, и некоторые языки все еще не могут обработать получение нескольких наборов результатов из единственной хранимой процедуры (хотя последний не делает SPS немного хуже, чем встроенный SQL в этом отношении).
Общий алгоритм будет выглядеть следующим образом:
- Obtain Text - Strip punctuation, special characters, etc. - Strip "simple" words - Split on Spaces - Loop Over Split Text - Add word to Array/HashTable/Etc if it doesn't exist; if it does, increment counter for that word
Конечный результат - это подсчет частоты всех слов в тексте. Затем вы можете взять эти значения и разделить на общее количество слов, чтобы получить процент частоты. Любая дальнейшая обработка зависит от вас.
Вы также захотите изучить Stemming . Stemming используется для сокращения слов до их корня. Например, going => go
, cars => car
и т. Д.
Подобный алгоритм будет распространен в фильтрах спама, индексировании ключевых слов и т. Д.
Вы не указали технологию, с которой работаете, поэтому я предполагаю, что сценарий оболочки также возможен.
Я всегда был впечатлен примером частотного анализа слов в Advanced Bash-Scripting Guide (12-11)
Следующий пример извлекает книгу из проекта Gutenburg и записывает «отчет» анализа частотного анализа слов:
wget http://www.gutenberg.org/files/20417/20417-8.txt -q -O- |
sed -e 's/\.//g' -e 's/\,//g' -e 's/ /\
/g' | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr > output.txt
Должен быть расширяемым, чтобы исключить слова из «общий» список (и, а ...) и т. д.
Это открытый вопрос в НЛП, поэтому на него нет простого ответа.
Моя рекомендация для быстрого и грязного «работает на меня»: topia.termextract .
Yahoo имеет службу извлечения ключевых слов ( http://developer.yahoo.com/search/content/V1/termExtraction.html ), которая обеспечивает низкий уровень запоминания, но высокую точность. Другими словами, он дает вам небольшое количество высококачественных терминов, но пропускает многие термины в ваших документах.
В Python есть topia.termextract ( http://pypi.python.org/ pypi / topia.termextract / ). Он относительно шумный и предлагает много поддельных ключевых слов, но его легко использовать.
Termine ( http://www.nactem.ac.uk/software/termine/ ) - это британский веб-сервис, который также относительно шумно и предлагает много поддельных ключевых слов. Однако, мне кажется, что он немного точнее, чем topia.termextract. YMMV.
Один из способов шумоподавления результатов с использованием слишком большого количества ключевых слов (например, topia.termextract и termine) - это создать словарь часто встречающихся терминов, а затем выбросить предложенные термины, которых нет в словаре. Другими словами, сделайте два прохода по вашему корпусу: первый проход, посчитайте частоту каждого ключевого слова. Во втором проходе отбросьте слишком редкие ключевые слова.
Если вы хотите написать свое собственное, возможно, лучшее введение написано Паком, который сейчас работает в IBM:
Вот еще несколько ссылок, если вы хотите узнать больше: