2010-11-08 2 views
2

У меня есть простой вопрос. Я делаю легкий обход, поэтому каждый новый контент приходит каждые несколько дней. Я написал токенизатор и хотел бы использовать его для некоторых целей интеллектуального анализа. В частности, я использую инструмент моделирования темы Малле, и один из каналов заключается в том, чтобы токенизировать текст в токенах, прежде чем дальнейшая обработка может быть выполнена. С количеством текста в моей базе данных требуется значительное количество времени, чтобы токенизировать текст (я использую regex здесь).Хранение текстового текста в db?

Как таковой, является ли нормой хранить токенированный текст в db, чтобы токенизированные данные могли быть легко доступны, а токенизация может быть пропущена, если они мне нужны для других целей интеллектуального анализа текста, таких как моделирование темы, маркировка POS? Каковы недостатки такого подхода?

+1

Вы недостаточно четко описали свой подход, чтобы получить осмысленный ответ. Можете ли вы привести примеры ввода и вывода процесса токенизатора и почему вы считаете, что это узкое место. –

+0

@Terrel, я отредактировал мой вопрос. Надеюсь, теперь это станет яснее. – goh

+1

по вашим другим вопросам, у меня есть лучшая картина того, что вы пытаетесь выполнить. Регулярные выражения, о которых вы спрашивали, очень медленны, поэтому я думаю, что существующие токенизаторы (как было предложено dmcer) будут делать это быстрее. Feedparser и beautifulsoup - лучшие решения python для получения текста из блогов для подачи в токенизатор. И да, я хотел бы кэшировать вывод этой фазы. –

ответ

1

Кэширование Промежуточные представления

Это вполне нормально для кэширования промежуточных представлений, созданных более медленных компонентов вашего конвейера обработки документов. Например, если вам нужно было dependency parse trees для всех предложений в каждом документе, было бы безумно делать что-либо , за исключением, разобрав документы один раз, а затем повторно используя результаты.

Slow лексемизация

Однако, я удивительно, что лексический анализ очень медленно для вас, так как материал, вниз по течению от токенизации обычно является узким место.

Какой пакет вы используете, чтобы сделать токенизацию? Если вы используете Python, и вы написали свой собственный код токенизации, вы можете попробовать один из токенизаторов, включенных в NLTK (например, TreebankWordTokenizer).

Другой хороший токенизатор, хотя тот, который не написано в Python, является PTBTokenizer в комплекте с Stanford Parser и от конца до конца NLP трубопровода в Stanford CoreNLP.

+0

спасибо за ваш ответ. Возможно, как предположил @Terrel, я использовал некоторое медленное регулярное выражение в своем собственном токенизаторе (некоторые из них хорошо символизировали смайлики). Будет проверять их. Я попробовал ntlk treebankwordtokenizer, но подумал, что, возможно, я могу заразиться руками, строя сам (основанный на соглашениях Penn Treebank). – goh

0

Я храню токенизированный текст в базе данных MySQL. Хотя мне не всегда нравятся накладные расходы на связь с базой данных, я обнаружил, что есть много задач обработки, которые я могу запросить для базы данных для меня (например, поиск дерева синтаксического анализа для сложных синтаксических шаблонов).

Смежные вопросы