Как я извлекаю ключевые слова, используемые в тексте? [закрытый]

Когда дело доходит до безопасности хранимые процедуры намного более безопасны. Некоторые утверждали, что весь доступ будет через приложение так или иначе. Вещь, которую забывают многие люди, состоит в том, что большинство нарушений защиты происходит из компании. Думайте о том, сколько разработчиков знает "скрытое" имя пользователя и пароль для Вашего приложения?

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

, По моему опыту, абстракция модели данных через хранимые процедуры также значительно улучшает пригодность для обслуживания. Как кто-то, кто должен был поддержать много баз данных в прошлом, это - такое облегчение, когда столкнуто с необходимым образцовым изменением, чтобы быть в состоянии просто изменить хранимую процедуру или два и иметь изменение быть абсолютно очевидным для ВСЕХ внешних приложений. Много раз Ваше приложение не является единственным, указал на базу данных - существуют другие приложения, сообщая, что решениями, и т.д. настолько разыскивающими все те затронутые точки, может быть стычка с открытым доступом к таблицам.

я также помещу регистрации плюс столбец для помещения программирования SQL в руках тех, кто специализируется на нем, и для SPS, делающего его намного легче изолировать и тестировать/оптимизировать код.

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

36
задан Robinicks 15 October 2009 в 21:37
поделиться

3 ответа

Общий алгоритм будет выглядеть следующим образом:

- 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 и т. Д.

Подобный алгоритм будет распространен в фильтрах спама, индексировании ключевых слов и т. Д.

39
ответ дан 27 November 2019 в 05:08
поделиться

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

Я всегда был впечатлен примером частотного анализа слов в 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

Должен быть расширяемым, чтобы исключить слова из «общий» список (и, а ...) и т. д.

5
ответ дан 27 November 2019 в 05:08
поделиться

Это открытый вопрос в НЛП, поэтому на него нет простого ответа.

Моя рекомендация для быстрого и грязного «работает на меня»: 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:

  • «Автоматическое извлечение глоссария: помимо определения терминологии. "доступно на http://portal.acm.org/citation.cfm?id=1072370
  • " Извлечение и использование глоссария в системе поиска и доставки информации для службы технической поддержки IBM "

Вот еще несколько ссылок, если вы хотите узнать больше:

  • http://en.wikipedia.org/wiki/Terminology_extraction
  • «CorePhrase: извлечение ключевых фраз для кластеризации документов»
  • Лю и др. 2009 из NAACL HLT
  • «Автоматическая идентификация некомпозиционных фраз»
  • «Data Mining встречает обнаружение коллокаций»
  • А также множество других ссылок, которые вы можете найти по этой теме.
119
ответ дан 27 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: