Подтвердить что ты не робот

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

Как мне получить данные для кучи текста для получения ключевых слов по использованию? ( "Яков Смит" или "забор" )

И есть ли программное обеспечение для этого? даже полуавтоматически, и если он может отфильтровать простые слова типа "the", "and", "or", то я мог бы быстрее перейти к темам.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Моя рекомендация по быстрому и грязному "работа для меня" 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: извлечение ключевой фразы для кластеризации документов"
  • Liu et al 2009 от NAACL HLT
  • "Автоматическая идентификация не-композиционных фраз"
  • "Data Mining встречает обнаружение Collocations"
  • Как и множество других ссылок, вы можете вырыть на эту тему.

Ответ 3

Существует также услуга Alchemy, которая может выполнять терминальное извлечение, тегирование концепции, анализ настроений и т.д.

Это действительно, я тестировал его, но я не знаю, что они коммерческие политики (если есть). Они предоставляют API для любого вида языка (в значительной степени).

Я где-то читал (извините, что не помню, где больше), что результат, данный Алхимией, менее шумный по сравнению с результатами, предложенными Джозефом.

Ответ 4

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

Я всегда был впечатлен примером анализа частоты слов в Advanced Bash -Scripting Guide (12-11)

Ниже, например, извлекается книга из проекта Gutenburg и выписывается анализ частоты слов "report":

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

Должна быть расширена, чтобы исключить слова из "общего" списка (a,,...) и т.д.

Ответ 5

Я лично рекомендую Maui (http://code.google.com/p/maui-indexer/): он полагается на KeA, но расширяет его различными способами. Он является обучаемым и может использовать термины с форматированием RDF.