2010-03-28 2 views
1

Я создаю сайт в django, который должен извлекать ключевые слова из коротких (твиттер-подобных) сообщений.Удаление ключевых слов в Python

Я посмотрел на пакеты, такие как topia.textextract и nltk, - но оба кажутся чрезмерными для того, что мне нужно делать. Все, что мне нужно сделать, это фильтровать слова типа «и», «или», «не», сохраняя существительные и глаголы, которые не являются конъюнктами или другими частями речи. Есть ли там «более простые» пакеты, которые могут это сделать?

РЕДАКТИРОВАТЬ: Это необходимо сделать в режиме реального времени на веб-сайте производства, поэтому использование службы извлечения ключевых слов, по-видимому, не может быть основано на их времени отклика и требовании дросселирования.

ответ

3

Вы можете сделать множество sw из «стоп-слов» вы хотите исключить (возможно копии его раз и навсегда от стоп слов свода NLTK, в зависимости, как вы знакомы с различными естественными языками, которые необходимо для поддержки), а затем применить его очень просто.

Например, если у вас есть список слов sent, составляющих предложение (лишенной пунктуации и строчными, для простоты), [word for word in sent if word not in sw] все, что вам нужно сделать список не-игнорируемых слов - вряд ли может быть проще, правильно?

Чтобы получить sent список в первую очередь, с помощью re модуля из стандартной библиотеки, re.findall(r'\w+', sentstring) может быть достаточно, если sentstring является строка с предложением вы имеете дело с - это не в нижнем регистре, но вы можете измените понимание списка, которое я предлагаю выше, [word for word in sent if word.lower() not in sw], чтобы компенсировать это, и (btw) сохранить исходный случай слова, что может быть полезно.

+0

Спасибо за ваш ответ. Есть ли способ, который я могу извлечь из файла nltk из пакета stopwords без использования * nltk? – oliland

+0

Конечно, вы просто загрузите его, например http://nltk.googlecode.com/svn/trunk/nltk_data/packages/corpora/stopwords.zip. Это всего лишь zipfile текстовых файлов с именем english, russian, german и т. Д. - каждый имеет по одному слову в строке. Нелегко было получить. –

1

Аббревиатуры, такие как NO для офицера навигации или OR для операционного зала, должны немного заботиться о том, чтобы вы не вызвали SNAFU ;-) Подозревается, что лучшие результаты можно получить из «Найти NO и отправить ее в OR», пометив слова с частями речи, используя контекст ... hint 1: «OR» должен привести к «[существительному]», а не «[соединению]». Подсказка 2: если вы сомневаетесь в слове, сохраните его как ключевое слово.

Смежные вопросы