Поиск многих выражений во многих документах с использованием Python - PullRequest
2 голосов
/ 14 декабря 2010

Мне часто приходится искать много слов (1000+) во многих документах (миллион +).Мне нужна позиция совпадающего слова (если совпадает).

Так что медленная псевдо версия кода

for text in documents:
     for word in words:
             position = search(word, text)
             if position:
                  print word, position 

Есть ли какой-нибудь быстрый модуль Python для этого?Или я должен сам что-то реализовать?

Ответы [ 3 ]

4 голосов
/ 14 декабря 2010

Для быстрого точного текстового поиска и поиска по нескольким ключевым словам попробуйте acora - http://pypi.python.org/pypi/acora/1.4

Если вы хотите получить несколько дополнительных дополнений - релевантность результатов, близкие совпадения, поиск слов и т. Д.http://pypi.python.org/pypi/Whoosh/1.4.1

Я не знаю, насколько хорошо масштабируется до миллионов документов, но это не займет много времени, чтобы узнать!

1 голос
/ 14 декабря 2010

Что не так с grep ?

Так вы должны использовать Python? Как насчет:

import subprocess

subprocess.Popen('grep <pattern> <file>')

что безумие Но эй! Вы используете Python; -)

0 голосов
/ 14 декабря 2010

Предполагая, что documents представляет собой список строк, вы можете использовать text.index(word), чтобы найти первое вхождение, и text.count(word), чтобы найти общее количество вхождений.Ваш псевдокод, кажется, предполагает, что слова будут встречаться только один раз, поэтому text.count(word) может быть ненужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...