Бинаризация в обработке естественного языка - PullRequest
11 голосов
/ 23 февраля 2009

Бинаризация - это процесс преобразования разноцветных объектов сущности в векторы чисел, чаще всего двоичные, для создания хороших примеров алгоритмов классификатора.

Если бы мы где бинаризировали предложение «Кот съел собаку», мы могли бы начать с присвоения каждому слову идентификатора (например, cat-1, ate-2, the-3, dog-4) и затем просто заменить слово по его идентификатору дает вектор <3,1,2,3,4>.

Учитывая эти идентификаторы, мы могли бы также создать двоичный вектор, задав каждому слову четыре возможных интервала и установив интервал, соответствующий определенному слову, равным единице, задав вектор <0,0,1,0,1,0, 0,0,0,1,0,0,0,0,0,1>. Последний метод, насколько мне известно, обычно называют методом мешков слов.

Теперь на мой вопрос, каков лучший метод бинаризации, когда речь идет об описании возможностей для обработки естественного языка в целом, и основанный на переходе анализ зависимостей (с алгоритмом Nivres) особенно?

В этом контексте мы не хотим кодировать целое предложение, а скорее текущее состояние анализа, например, верхнее слово в стеке и первое слово во входной очереди. Так как порядок очень важен, это исключает метод «мешок слов».

С best я имею в виду метод, который делает данные наиболее понятными для классификатора без использования ненужной памяти. Например, я не хочу, чтобы слово bigram использовало 400 миллионов функций для 20000 уникальных слов, если только 2% биграмм действительно существуют.

Поскольку ответ также зависит от конкретного классификатора, меня больше всего интересуют модели максимальной энтропии (liblinear), машины опорных векторов (libsvm) и персептроны, но также приветствуются ответы, применимые к другим моделям.

Ответы [ 3 ]

4 голосов
/ 25 февраля 2009

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

Вторым важным решением является то, что вы собираетесь делать с данными постфактум. Метод «мешок слов» в представленной вами двоичной форме игнорирует порядок слов, что вполне нормально, если вы делаете суммирование текста или, возможно, поиск в стиле Google, где вам все равно где слова появляются, пока они появляются. Если, с другой стороны, вы создаете что-то вроде компилятора или парсера, порядок очень важен. Вы можете использовать подход токен-вектор (как во втором абзаце) или расширить подход «мешок слов», чтобы каждая ненулевая запись в векторе мешок слов содержала линейную позицию индекса токена. во фразе.

Наконец, если вы собираетесь строить синтаксический анализ деревьев , есть очевидные причины, по которым вы захотите использовать подход токен-вектор, так как очень сложно поддерживать подфразу идентификаторы для каждого слова в векторе «мешок слов», но очень легко сделать «субвекторы» в векторе токенов. Фактически, Эрик Брилл использовал последовательность идентификатора токена для своего тега части речи , который действительно хорош.

Не возражаете, если я задам вопрос, над какой конкретной задачей вы работаете?

3 голосов
/ 02 марта 2009

Бинаризация является актом трансформируя красочные черты сущность в векторы чисел, чаще всего двоичные векторы, чтобы сделать хорошие примеры для классификатора алгоритмы.

В основном я сталкивался с числовыми объектами, которые принимают значения между 0 и 1 (не так, как вы описали), представляющие релевантность конкретной функции в векторе (между 0% и 100%, где 1 представляет 100%). Типичным примером этого являются tf-idf векторы: в векторе, представляющем документ (или предложение), у вас есть значение для каждого термина во всем словаре, которое указывает на актуальность этого термина для представленного документа. .

Как уже сказал Майк в своем ответе , это сложная проблема в широкой области. В дополнение к его указателям, вам может быть полезно изучить некоторые методы поиска информации , такие как модель векторного пространства , классификация векторного пространства и скрытый семантическая индексация в качестве отправной точки. Кроме того, поле неоднозначности смысла слова имеет много общего с возможностью представлений в НЛП.

0 голосов
/ 26 февраля 2009

[Не прямой ответ] Все зависит от того, что вы пытаетесь проанализировать, а затем обработать, но для общей обработки коротких человеческих фраз (например, IVT) другим методом является использование нейронных сетей для изучения шаблонов. Это может быть очень острым для небольших словари

...