Найти тему
Властелин машин

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

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

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

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

-2

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

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

-3

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

-4
-5

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

-6

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

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

-7

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

-8

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

-9

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