Cómo ajustar el tokenizador de oraciones NLTK

Estoy usando NLTK para analizar algunos textos clásicos y tengo problemas para tokenizar el texto por oración. Por ejemplo, esto es lo que obtengo de un fragmento deMoby Dick:

import nltk
sent_tokenize = nltk.data.load('tokenizers/punkt/english.pickle')

'''
(Chapter 16)
A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but
that's a rather cold and clammy reception in the winter time, ain't it, Mrs. Hussey?"
'''
sample = 'A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but that\'s a rather cold and clammy reception in the winter time, ain\'t it, Mrs. Hussey?"'

print "\n-----\n".join(sent_tokenize.tokenize(sample))
'''
OUTPUT
"A clam for supper?
-----
a cold clam; is THAT what you mean, Mrs.
-----
Hussey?
-----
" says I, "but that\'s a rather cold and clammy reception in the winter time, ain\'t it, Mrs.
-----
Hussey?
-----
"
'''

No espero la perfección aquí, teniendo en cuenta que la sintaxis de Melville es un poco anticuada, pero NLTK debería ser capaz de manejar comillas dobles de terminal y títulos como "Mrs." Sin embargo, dado que el tokenizador es el resultado de un entrenamiento no supervisado, no puedo encontrar la manera de jugar con él.

¿Alguien tiene recomendaciones para un mejor tokenizador de oraciones? Preferiría una heurística simple que puedo hackear en lugar de tener que entrenar a mi propio analizador.

Respuestas a la pregunta(4)

Su respuesta a la pregunta