2013-03-06 4 views
1

Я новичок в извлечении признаков для обработки естественного языка. Я хочу знать, как я могу использовать hashmap для извлечения функций для текста. Если каждая функция является «ключом» в hashmap, а ее значением является «значение» (все функции двоичные, 0 или 1), означает ли это, что мне нужно иметь n hashmap (n - количество слов в тексте)? Потому что для каждого слова мне нужно извлечь функции.Binary Feature Extraction

Я прав?

Спасибо заранее, Алиса

+0

Проблема, описанная здесь, по-видимому, вызвана ошибкой формата ввода (см. Окончательный комментарий на ответ). Голосование закрывается как «слишком локализованное». – jogojapan

ответ

0

Да, вы можете осуществить это с хэш-карта, однако в зависимости от количества функций и ваших требований к памяти не может быть лучшим или быстрым структуры данных, это действительно зависит от ваш домен. Как правило, представление объектов как присутствующих или нет приведет к плохим результатам. Лучшим методом является использование TF-IDF при взвешивании ваших функций.

Подход, о котором вы говорите, - это подход «сумка слов». Это означает, что вы подписываете базу документов на границах слов и используете слова как функции. В качестве первого прохода вы должны удалить стоп-слова (т.е. «a», «и», «the»), а затем нормализовать свои данные (т.е. Now == now == nOw). Затем вы можете выполнить слово, чтобы уменьшить размер вашего вектора.

Хороший способ занижать сейчас, чтобы извлечь функции, - это посмотреть на MALLET. У меня очень простая реализация Naive Bayes с синтаксическим анализатором для RCV-1, который вы можете посмотреть на примере Naive Bayes

+0

Спасибо, Шейн, MALLET - это именно то, что я использую! И я готовил для этого входные данные. То, что у меня есть сейчас, в этом формате: Word Label F1: v1 F2: v2 F3: v3. Я использую формат SVMlight. Это верно? Результат, который я получил для моего классификатора, был ужасным, но, по-видимому, он выглядел так, что с входными данными нет ничего плохого. Я прав? Правильно ли я подготовил входные данные? – Alice1989

+0

Каким был ваш корпус? Да, ваш формат выглядит правильно. У вас есть сбалансированный набор данных? Кроме того, если это вам помогло, не забудьте проголосовать :) – Shane

+0

Также у вас есть доступ к необработанному тексту, который отсутствует в формате SVMlight? Другой подход заключается в построении конвейера в MALLET с использованием встроенных функций. Взгляните на http://mallet.cs.umass.edu/import-devel.php. Вы встраиваете MALLET в существующее приложение или вы просто запускаете его из командной строки? – Shane