Cálculo dos valores de probabilidade de emissão para o modelo de Markov oculto (HMM)

8

Eu sou novo no HMM e ainda estou aprendendo. Atualmente, estou usando o HMM para marcar parte do discurso. Para implementar o algoritmo viterbi, preciso de probabilidades de transição ( ai,j ) e de probabilidades de emissão ( bi(o) ).

Estou gerando valores para essas probabilidades usando o método de aprendizado supervisionado, onde dou uma frase e sua marcação. Calculo probabilidades de emissão como:

bi(o)=Count(io)Count(i)

onde Count(i) é o número de vezes que a tag i ocorre no conjunto de treinamento e Count(io) é o número de vezes em que a palavra observada o mapeada para a tag i .

Porém, ao usar esse b_i (o) treinado bi(o)para marcação, podem ser observadas variáveis ​​na sentença especificada que nunca apareceram ao encontrar o valor para bi . Nesse caso, como você estima um valor para bi para essa instância?

Ramesh-X
fonte
Do jeito que você está calculando as probabilidades de emissão, é o único? Estou tentando resolver um caso semelhante para uma tarefa.

Respostas:

5

Para esse tipo de pergunta, é possível usar o Laplace Smoothing . Em geral, a Laplace Smoothing pode ser escrita como:

If y{1,2,...,k}then,P(y=j)=i=1mL{yi=j}+1m+k

Aqui L é a probabilidade.

Portanto, neste caso, os valores de probabilidade de emissão ( ) podem ser reescritos como: bi(o)

bi(o)=\Count(io)+1\Count(i)+n

onde é o número de tags disponíveis após o treinamento do sistema.n

Ramesh-X
fonte
não deve nser o número de palavras únicas, não o número de tags? Essa é a única maneira pela qual a probabilidade
chega
1

Esta é uma pergunta relativamente antiga, mas adicionarei meus 5 centavos para as pessoas que (como eu) se depararam com ela em busca de algo relacionado.

Uma abordagem alternativa para lidar com probabilidades de emissão zero é "fechar o vocabulário". Uma idéia é definir palavras "raras" no conjunto de treinamento - aquelas que aparecem menos do que o número predefinido de vezes e substituí-las por "classes de palavras" antes do treinamento do modelo. Ao aplicar um modelo a uma nova sequência de palavras, todas as palavras que não foram vistas em um conjunto de treinamento também são convertidas em "classes de palavras" (considerando-as efetivamente como "raras"). Garante que, para um modelo, não haverá palavras invisíveis.

As regras para produzir "classes de palavras" a partir de palavras devem ser selecionadas manualmente (o que é uma desvantagem). Por exemplo, em (provavelmente) primeiro artigo em que essa abordagem foi utilizada (Bikel, DM, Schwartz, R. & Weischedel, RM Machine Learning (1999) 34: 211 .; https://link.springer.com/article/ 10.1023 / A: 1007558221122 ; http://curtis.ml.cmu.edu/w/courses/index.php/Bikel_et_al_MLJ_1999 ) e exemplos de classes são:

Word Feature           | Example Text           | Intuition
-----------------------|------------------------|-----------------------------------------
twoDigitNum            | 90                     | Two-digit year
fourDigitNum           | 1990                   | Four digit year
containsDigitAndAlpha  | A8956-67               | Product code
containsDigitAndDash   | 09-96                  | Date
containsDigitAndSlash  | 11/9/89                | Date
containsDigitAndComma  | 23,000.00              | Monetary amount
containsDigitAndPeriod | 1.00 Monetary          | amount, percentage
otherNum               | 456789                 | Other number
allCaps                | BBN                    | Organization
capPeriod              | M.                     | Person name initial
firstWord              | first word of sentence | No useful capitalization information
initCap                | Sally                  | Capitalized word
lowerCase              | can                    | Uncapitalized word
other                  | ,                      | Punctuation marks, all other words

Um exemplo de sentença marcada pré-processada de um conjunto de treinamento (das palestras de Michael Collins):

"Os lucros / NA dispararam / NA na / NA Boeing / SC Co./CC, / NA facilmente / cobertura de NA / previsões de NA / NA em / NA Wall / SL Street / CL Street / CL, / NA como / NA seus / NA CEO / NA Alan / SP Mulally / CP anunciado / Primeiro NA / Trimestre de NA / Resultados de NA / NA ./NA "

é transformado (com algum conjunto hipotético de tags e "palavras raras") em (palavras substituídas, como mostrado em negrito )

" firstword / NA disparou / NA em / NA initCap / SC Co./CC, / NA facilmente / NA minúsculas / previsões de NA / NA on / NA initCap / SL Street / CL, / NA como / NA his / NA CEO / NA Alan / SP initCap / CP anunciado / primeiro NA / trimestre de NA / resultados de NA / NA ./NA "

Ainda é possível que no conjunto de treinamento nem todos os pares de "tag -> palavra / classe de palavras" sejam vistos, o que torna impossível que uma determinada palavra ou classe de palavras seja identificada com essas tags. Mas isso não impede que essas palavras sejam marcadas com outras tags - ao contrário de quando há uma palavra que não foi vista em um conjunto de treinamento.

áugure
fonte