Я думаю, что PlaintextCorpusReader
уже сегментирует вход с токенизатором punkt, по крайней мере, если ваш язык ввода является английским.
Конструктор PlainTextCorpusReader
def __init__(self, root, fileids,
word_tokenizer=WordPunctTokenizer(),
sent_tokenizer=nltk.data.LazyLoader(
'tokenizers/punkt/english.pickle'),
para_block_reader=read_blankline_block,
encoding='utf8'):
Вы можете передать читателю токенизатор слова и предложения, но для последнего по умолчанию уже есть nltk.data.LazyLoader('tokenizers/punkt/english.pickle')
.
Для одной строки токенизатор будет использоваться следующим образом (пояснил здесь , см. раздел 5 для токенатора punkt).
>>> import nltk.data
>>> text = """
... Punkt knows that the periods in Mr. Smith and Johann S. Bach
... do not mark sentence boundaries. And sometimes sentences
... can start with non-capitalized words. i is a good variable
... name.
... """
>>> tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
>>> tokenizer.tokenize(text.strip())