2013-02-11 4 views
1

Я пытаюсь использовать Perceptron для выполнения контролируемой классификации и тем самым выполнять маркировку предложения POS. Я предполагаю, что теги каждого слова не зависят от другого. (то есть я просто использую только слово как функцию). Я довольно новичок в алгоритмах машинного обучения, поэтому я не могу понять, как представить функцию функции для каждого слова.Создание функции функции для тегов POS

У меня есть набор из 100 предложений, где каждому слову присваивается определенный тег (например, N, V, J (прилагательное) и т. Д.). Например,

Джек (N) и (&) Джилл (Н) пошел (V) к (PRP) Перу (N)

где метки в фигурных скобках. Допустим, у меня есть в общей сложности 10 возможных тегов. Теперь мой вопрос: как выглядит вектор функций для слова «Джек»?

Я очень заинтересован в его реализации в качестве вектора, так как мой код будет соответствовать нотации лучше. Когда я выясню, как выглядит функция функции, я смогу реализовать алгоритм Перцептрона!

Кроме того, скажем, я хочу добавить такие функции, как (а) Заглавна ли первая буква? (b) Слово переносится и т. д. Как я могу включить это в свой вектор-функцию?

Интуитивно я вижу, что вектор должен иметь только двоичные значения, но я не могу действовать дальше этого.

Пожалуйста, попробуйте объяснить конкретными примерами, если это возможно!

ответ

11

Используйте словарь, который отображает слова в числовые идентификаторы. Если ваш словарь содержит 10 000 предметов, ваш словарь сопоставляет каждое слово с номером в диапазоне 0-9999, а каждое слово представляется в виде двоичного вектора длиной 10000, где активен только один элемент: это соответствует идентификатору слова в Словарь.

Если вам нужны дополнительные функции, кроме слова ids, вы можете просто привязать их к концу вектора функций: то есть вы можете сделать функции с более чем 10 000+ функцией капитализации, предыдущей функцией тега (потребуется двоичное кодирование как указано выше) и т. д.

В качестве конечного пункта пометка POS является экземпляром проблемы structured prediction, а не серией независимых классификаций. Если это будет больше, чем академическое упражнение, вам нужно перейти на structured perceptron или другой метод структурированного обучения, например, CRF или struct-SVM.

EDIT: простой пример

Представьте, у меня есть пять слов, словарный запас {к, кошка, сидел на, мат}, и уменьшенный {ДЕТ множества ярлыков, N, V, PREP}. Мое предложение таково:

(A, DET) (кошка, N) (сит, V) (включено, PREP) (в, DET) (мат, N).

Теперь я хочу вектор функций для каждого слова, из которого я хотел бы иметь возможность предсказать тег. Я буду использовать функции 0-4 в качестве функции индикатора id слова, так что функция 0 соответствует 'the', функции 1 - 'cat' и т. Д.Это дает мне векторы следующих функций (с предполагаемым «класс» или присвоения тегов после ->):

[1 0 0 0 0] -> DET 
[0 1 0 0 0] -> N 
[0 0 0 0 0] -> V 
... 

Я мог бы рассматривать их как случаи и применять мой учебный алгоритм выбора для решения этой задачи, однако , только функции идентификатора слова не будут покупать меня много. Я решил, что хочу включить какую-то интуицию, подобную HMM, в мои классификации, поэтому я также добавляю функции функций, которые указывают, что было тегом. Поэтому я использую функции 5-8 в качестве индикаторов для этого, с 5 соответствующими DET, от 6 до N и т. Д. Теперь у меня есть следующие:

[1 0 0 0 0 0 0 0 0] -> DET (because this is the first word there's no previous tag) 
[0 1 0 0 0 1 0 0 0] -> N 
[0 0 0 0 0 0 1 0 0] -> V 

Теперь я могу продолжать добавлять новые функции к содержанию моего сердца, используя, например, функцию 9, чтобы указать, является ли капитализируются слово или нет, функция 10 может быть, соответствует ли слово список известные имена существительных и т. д. Если вы немного читаете о задачах и методах структурированного прогнозирования, вы должны понять, почему использование модели, настроенной для этой задачи (проще всего это HMM, но я бы хотел перейти к CRF/структурированному Perceptron/StructSVM для достижения высоких результатов) превосходит рассматриваемое решение как совокупность независимых решений.

+0

Но как этот вектор будет отличаться для каждого тега? Должна ли моя функция функции создавать уникальный двоично-значный вектор для каждого тега части речи? Как я понимаю из вашего ответа, вектор функций является константой? И да, я планирую продолжить структурированный персептрон для следующего шага, но сначала мне нужно понять основы персептрона. – arv100kri

+0

Надеемся, что редактирование сделает все более четким: размерность постоянна, но значения функций функции меняются в зависимости от пары слово/тег. –

+0

Ничего себе! Спасибо огромное! Это было именно то объяснение, которое я искал! Да, я планирую двигаться дальше со структурированными персептронами! Я нашел хорошие статьи по обоим темам, но я не смог представить адекватное решение. Спасибо вам, теперь я могу это сделать :) – arv100kri

 Смежные вопросы

  • Нет связанных вопросов^_^