February 9, 2021

Управляем потоками слов и предложений с Python

Для  моделей машинного обучения текст необходимо представлять в виде потоков  единиц информации, например, слов и их сочетаний (n-gramm). Разберемся,  как это дело организовать.

В одной из прошлых статей мы научились считывать корпус размеченных текстов с Python. Для этого был создан специальный класс CorpusReader. Расширим  его функционал для организации чтения текстов в виде генератора  абзацев, предложений, слов, n-грамм (цепочек из n слов).

Так, для выдачи абзацев и предложений можно использовать следующие методы:

Метод paras использует определенный ранее  readfiles, возвращающий содержимое набора файлов, каждое из которых делится на абзацы по заданному в параметре delim разделителю. Метод sents для каждый абзац набора файлов делит на предложения, используя функцию sent_tokenize nltk.

Рассмотрим примеры. Создадим экземпляр объекта CorpusReader и выведем абзацы набора файлов, находящихся в корневой директории:

Посмотрим, как выглядит содержимое этих файлов:

Теперь зададим метод вывода списка слов из набора файлов:

Данный метод чуть более громоздкий из-за операций фильтрации пунктуации и цифр. В основе работы - метод sents  для возврата всех предложений, а из последних слова извлекаются посредством функции word_tokenize из модуля nltk.tokenize.

Давайте выведем слова из файла 'эхо кавказа1.txt':

И еще рассмотрим способ вывода n-грамм (цепочек из n слов):

Данный метод использует функцию ngrams модуля nltk для вывода n-грамм заданной длины из списка слов. Рассмотрим работу ngram_files на практике:

Вот  такие методы возврата генераторов абзацев, предложений, слов и n-грамм я  использую на практике. А способы хитрости для вывода схожей информации  используете вы?

Еще больше статей можете прочитать на моем канале в Яндекс Дзен.