recuento real de palabras en NLTK

El libro NLTK tiene un par de ejemplos de conteos de palabras, pero en realidad no son conteos de palabras sino conteos de token. Por ejemplo, el Capítulo 1, Vocabulario de conteo dice que lo siguiente da un recuento de palabras:

text = nltk.Text(tokens)
len(text)

Sin embargo, no es así, da un recuento de palabras y puntuación. ¿Cómo se puede obtener un conteo real de palabras (ignorando la puntuación)?

Del mismo modo, ¿cómo puede obtener el número promedio de caracteres en una palabra? La respuesta obvia es:

word_average_length =(len(string_of_text)/len(text))

Sin embargo, esto estaría apagado porque:

len (string_of_text) es un recuento de caracteres, incluidos los espacioslen (texto) es un conteo de tokens, excluyendo espacios pero incluyendo signos de puntuación, que no son palabras.

¿Me estoy perdiendo de algo? Esta debe ser una tarea de PNL muy común ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta