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.