Нет пакета NLTK / SpaCy, который мог бы напрямую решить вашу задачу.
Я бы предложил использовать один из трех методов глубокого обучения, как упомянуто в этой статье LREC (Che et al., 2016).Вы должны представить свою проблему как задачу классификации, где вы должны предсказать, следует ли за словом в последовательности знак пунктуации.
Сама бумага берет подмножество последовательности, <w(n-m) ... w(n-1), w, w(n+1), ... w(n+m)>
, чтобыучитывает контекст, использует их векторы слов и обучается по трем различным моделям, каждая из которых имеет 2, 3 или 4 выходных класса (O
: без знаков препинания, PERIOD
: точки, точки с запятой, восклицательные знаки, COMMA
: запятые, тире и двоеточия, QUESTION MARK
: q знаков).
Первая модель использует простой DNN, вторая - CNN, а третья - это вариант CNN во второй модели.Если вы решите использовать только периоды (сокращая количество классов), простая модель DNN, как сообщается, обеспечивает F1 баллы ~ 60%.
Что касается кода, вы можете запросить авторов.Или, так как вы хотите заняться этим как хобби, вы можете реализовать это с нуля самостоятельно.