Aquí hay un artículo completo sobre el problema, con un resumen de varios enfoques. Se llama Estimación de valor distinto en la literatura.
Si tuviera que hacer esto por mí mismo, sin haber leído papeles elegantes, lo haría. Al construir modelos de lenguaje, a menudo hay que estimar la probabilidad de observar una palabra previamente desconocida, dado un montón de texto. Un enfoque bastante bueno para resolver este problema para los modelos de lenguaje en particular es usar el número de palabras que ocurrieron exactamente una vez, dividido por el número total de tokens. Se llama el Estimación de Good Turing .
Sea u1 el número de valores que ocurrieron exactamente una vez en una muestra de m elementos.
P[new item next] ~= u1 / m.
Sea la cantidad de elementos únicos en su muestra de tamaño m.
Si asume erróneamente que la tasa de 'nuevo elemento siguiente' no disminuyó a medida que obtuvo más datos, entonces usando Good Turing, tendrá
total uniq set of size s ~= u + u1 / m * (s - m)
Esto tiene un comportamiento desagradable ya que u1 se vuelve realmente pequeño, pero eso podría no ser un problema para usted en la práctica.