Бинаризация - это процесс преобразования разноцветных объектов сущности в векторы чисел, чаще всего двоичные, для создания хороших примеров алгоритмов классификатора.
Если бы мы где бинаризировали предложение «Кот съел собаку», мы могли бы начать с присвоения каждому слову идентификатора (например, 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) и персептроны, но также приветствуются ответы, применимые к другим моделям.