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.