2011-01-28 2 views
1

Я начинаю сайт, который будет захватывать много данных из API Twitter. Затем я хочу найти определенные фразы в твитах, которые я получаю от API. Мне интересно, какой лучший язык для этого. Большинство моих знаний в PHP, но из того, что я читал в прошлом, я больше склоняюсь к python. Как я уже говорил, я буду искать определенные фразы, поэтому я хотел бы использовать что-то похожее на функцию strpos PHP. Я ищу язык, который будет иметь самое быстрое время обработки. Я также буду делать много INSERT с этим кодом, но я полагаю, что обработка строк будет занимать большую часть времени, поэтому я сосредоточен на этом. Заранее благодарю за ваши ответы.Лучший язык для большого количества сопоставлений строк

+0

C++, C или ASM? –

ответ

1

Один из моих проектов урожаи твитов от многих разработчиков, а затем фильтры, корпус вниз только те твиты, имеющих отношение к технологии и разработки , Стоимость получения этих твитов из Twitter dwarfs время, затраченное на поиск строк.

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

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

1

Ваша мысль, что сравнение строк займет больше всего времени, является правильным, однако производительность, вероятно, будет одинаковой для любого языка, который вы решите использовать. Таким образом, ваш лучший вариант - выбрать тот, с которым вам больше всего нравится. С другой стороны, изучение нового языка может только увеличить ваши знания, а синтаксис python сделает вас лучшим программистом.

В любом случае гораздо важнее использовать соответствующие алгоритмы для поиска и индексирования строк. Wikipedia имеет достойную статью, которая должна дать вам обзор различных алгоритмов. Из вашего описания это звучит так, как будто вам было бы лучше использовать конечный поиск набора шаблонов с предпочтением тех, которые препроцесс шаблонов, таких как Aho-Corasick.

3

Если ваш набор критериев поиска исправлен, the esmre library for Python может быть только тем, что вам нужно. Он использует Aho-Corasick для быстрой подстройки подстроки к большим наборам поисковых запросов.

Вот пример, который использует esmre найти упоминания о некоторых языках программирования:

import esm 

tweets = """ 
I've always loved Python. 
C# is better than I thought. It's like Java done right. 
My tiny mind cannot grasp Haskell. 
Objective-C is like C and Smalltalk's illegitimate lovechild. 
""".strip().split('\n') 

search_terms = ["Python", "Ruby", "PHP", "Erlang", "Haskell", "OCaml", 
    "Objective-C", "C#", "C++", "Common Lisp", "Scheme", "Java", "Smalltalk", 
    " C " 
] 

# Build the index of search terms 
index = esm.Index() 

for term in search_terms: 
    index.enter("%s" % term.lower(), term) 

index.fix() 

# Find mentions of the search terms 
for tweet in tweets: 
    matches = index.query(tweet.lower()) 
    languages = [label for (position, label) in matches] 

    print "%r mentions %r" % (tweet, languages) 
Смежные вопросы