Управляем потоками слов и предложений с 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-грамм я использую на практике. А способы хитрости для вывода схожей информации используете вы?
Еще больше статей можете прочитать на моем канале в Яндекс Дзен.