Бинаризация в обработке естественного языка
Бинаризация - это процесс преобразования красочных характеристик объекта в числовые векторы, чаще всего в двоичные векторы, для создания хороших примеров для алгоритмов классификатора.
Если нам нужно преобразовать предложение «Кошка съела собаку» в двоичную форму, мы могли бы начать с присвоения каждому слову идентификатора (например, 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) , в частности?
В этом контексте мы хотим кодировать не все предложение, а текущее состояние синтаксического анализа, например, верхнее слово в стеке и первое слово во входной очереди. Поскольку порядок очень важен, это исключает метод «мешка слов».
С лучше , я имею в виду метод , который делает данные наиболее понятными для классификатора, не используя ненужную память. Например, я не хочу, чтобы биграмма слова использовала 400 миллионов функций для 20000 уникальных слов, если только 2% биграмм действительно существуют.
Поскольку ответ также зависит от конкретного классификатора, меня больше всего интересуют модели максимальной энтропии (liblinear), вспомогательные векторные машины (libsvm) и перцептроны, но также приветствуются ответы, применимые к другим моделям.
Ответов (3)3
На самом деле это действительно сложный вопрос. Первое, что вам нужно сделать - это лемматизировать ваши входные токены (ваши слова). Если вы сделаете это, вы резко уменьшите количество типов, и синтаксический анализ станет намного проще. Однако для лемматизации токена требуется много работы. Теперь, в компьютерном языке, эта задача значительно упрощается, поскольку в большинстве языков ключевые слова или имена переменных разделяются четко определенным набором символов, например, пробелами, точкой или чем-то еще.
Второе важное решение - это то, что вы собираетесь делать с данными постфактум. Метод "мешок слов" в представленной вами двоичной форме игнорирует порядок слов, что совершенно нормально, если вы выполняете резюмирование текста или, возможно, поиск в стиле Google, где вам все равно, где слова появляются, пока они появляются. С другой стороны, если вы создаете что-то вроде компилятора или парсера, порядок очень важен. Вы можете использовать подход вектора лексемы (как во втором абзаце) или расширить подход мешка слов таким образом, чтобы каждая ненулевая запись в векторе мешка слов содержала позицию линейного индекса лексемы во фразе.
Наконец, если вы собираетесь строить деревья синтаксического анализа , есть очевидные причины, по которым вы захотите использовать подход с вектором лексемы, так как поддерживать идентификаторы подфразов для каждого слова в сумке - большая проблема. -слова вектор, но очень легко сделать "подвекторы" в векторе-токене. Фактически, Эрик Брилл использовал последовательность идентификаторов токенов для своего теггера части речи , что очень удобно .
Не возражаете, если я спрошу, над какой конкретной задачей вы работаете?
Бинаризация - это процесс преобразования красочных характеристик объекта в векторы чисел, чаще всего в двоичные векторы, для создания хороших примеров для алгоритмов классификатора.
Я в основном сталкивался с числовыми функциями, которые принимают значения между 0
и 1
(не двоичными, как вы описываете), представляющими релевантность конкретной функции в векторе (между 0% и 100%, где 1
представляет 100%). Типичным примером для этого являются векторы tf-idf : в векторе, представляющем документ (или предложение), у вас есть значение для каждого термина во всем словаре, которое указывает на релевантность этого термина для представленного документа.
Как уже сказал Майк в своем ответе , это сложная проблема в широком диапазоне. В дополнении к его указателям, вы можете найти его полезно взглянуть на некоторые информационно - поисковые методы , таких как векторная модель , векторное пространство классификацию и скрытой семантической индексация в качестве исходных точек. Кроме того, область устранения неоднозначности смысла слова много занимается проблемами представления признаков в НЛП.