Подтвердить что ты не робот

Бинаризация в обработке естественного языка

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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