Python или Java для обработки текста (интеллектуальный анализ текста, поиск информации, обработка естественного языка)
Я скоро начну с нового проекта, где я собираюсь выполнять множество задач обработки текста, таких как поиск, классификация/классификация, кластеризация и т.д.
Там будет огромное количество документов, которые необходимо обработать; вероятно, миллионы документов. После первоначальной обработки он также должен быть обновлен ежедневно несколькими новыми документами.
Можно ли использовать Python для этого или слишком медленный Python? Лучше ли использовать Java?
Если возможно, я бы предпочел Python с тех пор, что я использовал в последнее время. Кроме того, я бы быстрее закончил кодировку. Но все зависит от скорости Python. Я использовал Python для выполнения небольших задач обработки текста всего несколькими тысячами документов, но я не уверен, насколько он масштабируется.
Ответы
Ответ 1
Оба хороши. Java имеет много возможностей для обработки текста. Stanford система обработки текста, OpenNLP, UIMA, а GATE, похоже, большой игроков (я знаю, что я их не хватает). Вы можете буквально запустить модуль StanfordNLP на большом корпусе после нескольких минут игры с ним. Но у него есть основные требования к памяти (3 ГБ или около того, когда я его использовал).
NLTK, Gensim, Pattern, и многие другие модули Python очень хороши при обработке текста. Их использование и производительность памяти очень разумны.
Python масштабируется, потому что обработка текста - очень легко масштабируемая проблема. Вы можете использовать многопроцессорную обработку очень легко при разборе/маркировке/разделении/извлечении документов. После того, как вы получите текст в любом виде вектор-функции, вы можете использовать массивы numpy, и все мы знаем, как большой numpy...
Я научился с NLTK, и Python очень помог мне в сокращении времени разработки, поэтому я полагаю, что вы впервые дали этот снимок. У них также очень полезный список рассылки, который я предлагаю вам присоединиться.
Если у вас есть пользовательские сценарии, вы можете проверить, насколько хорошо они работают с PyPy.
Ответ 2
Очень сложно ответить на такие вопросы, не пытаясь. Так почему бы вам не
- Выясните, какая будет сложная операция.
- Реализуйте это (и я имею в виду самый простой, быстрый хак, который вы можете сделать).
- Запустите его с лотом данных и посмотрите, сколько времени займет
- Выясните, слишком ли он медленный
Я делал это в прошлом, и это действительно способ увидеть, что что-то достаточно хорошо для чего-то делает.
Ответ 3
Просто напишите, самый большой недостаток в программировании людей - преждевременная оптимизация. Работать над проектом, написать его и заставить его работать. Затем вернитесь и исправьте ошибки и убедитесь, что они оптимизированы. Там будет множество людей, которые используют скорость x vs y, а y лучше, чем x, но в конце дня это всего лишь язык. Это не язык, а то, как он это делает.
Ответ 4
Это не язык, который вы должны оценить, но фреймворки и серверы приложений для кластеризации, хранения/поиска данных и т.д. доступны для языка.
вы можете использовать jython и использовать все технологии java для высокой нагрузки и выполнять разбор текста с помощью python.