Если ваш x в X содержит только слова, и вы хотите сопоставлять только слова, вы можете сделать следующее:
Вставить ваши ключевые слова в набор, который делает журнал доступа (n), а затем проверитьдля каждого слова в x, если оно содержится в этом наборе.
вроде:
keywords = set(['bla', 'fubar'])
for w in [x.split(' ') for x in X]:
if w in keywords:
pass # do what you need to do
Хорошей альтернативой будет использование библиотеки googles re2, которая использует теорию супер хороших автоматов для создания эффективныхmatchers.(http://code.google.com/p/re2/)
РЕДАКТИРОВАТЬ: Убедитесь, что вы используете правильную буферизацию и что-то на скомпилированном языке, что делает его намного быстрее. Если его размер меньше пары гигабайт, он должен работать и с питоном.