Занятие 3
Леммы и токены
Лемматизация в Python
Списки частотных слов
Поиск слов по их грамматическим признакам
Лемматизация
Это приведение всех слов в тексте к начальной, словарной форме. Для этого нужно провести морфологический анализ, то есть определить:
  • часть речи;
  • падеж;
  • число;
  • род.



Для морфологического анализа на русском языке используется библиотека pymorphy2. А для разбивки текста на отдельные токены используем пакет библиотек для обработки естественного языка NLTK — Natural Language Toolkit.

Для практики скачайте, пожалуйста, рассказ Чехова «Слова, слова и слова» в формате txt из библиотеки RoyalLib.
Полезные ссылки

Подсчёт найденных значений в длинных списках
from collections import Counter — загрузка библиотеки

Counter (list) — подсчёт по значениям без сортировки

Counter (list).most_common() — подсчёт по значениям с сортировкой результатов от большего к меньшему

Стоп-слова
Самые частотные слова — это знаки пунктуации и союзы. Для анализа они бесполезны. Поэтому нам нужен список стоп-слов, которые мы уберём из выборки.
Есть два списка стоп-слов: от библиотеки nltk и от библиотеки stop-words. Я обычно использую второй и дополняю его нужными словами. Также можно загрузить свой собственный список.

Кроме того, к списку стоп-слов можно добавить знаки пунктуации.
Прилагательные
Прилагательные порой определяются не совсем удачно, так как вместе с прилагательными в выборку попадают местоимения («свой», «который», «тот»). Отберите из топа то, что действительно несёт смысл.

Библиотека PyMorphy 3 может определять два типа прилагательных:
  • полное — «красивый»;
  • краткое — «красив».



frequent_pronouns = ['свой', 'который', 'тот', 'этот', 'мой', 'твой', 'его', 'её', 'наш', 'ваш', 'их', 'один', 'весь', 'сам', 'самый', 'другой', 'такой', 'какой']
Глаголы
С глаголами и наречиями та же ситуация, что и с прилагательными.

Есть два варианта глаголов:
  • личные глаголы в каком-то лице и числе — «люблю»;
  • инфинитив — «любить».

Скорее всего, в топе глаголов вы увидите: «быть», «мочь», «сказать», «говорить», «знать», «стать», «хотеть», «идти», «иметь». Чтобы об этом догадаться, не нужен дар прорицания: просто эти глаголы входят в список 100 наиболее частотных лемм в русском языке. Поэтому иногда имеет смысл убрать их из выборки.



frequent_verbs = ['быть', 'мочь', 'сказать', 'говорить', 'знать', 'стать', 'хотеть', 'идти', 'иметь']

frequent_adverbs = ['очень', 'только', 'ещё', 'уже', 'можно', 'надо', 'потом', 'затем', 'вдруг', 'совсем', 'слишком', 'наконец', 'тоже', 'также', 'конечно', 'вообще']
Род и число слов
По умолчанию в выборку попадают не только существительные, а все слова какого-то рода или числа. Сюда же попадают глаголы, по которым можно определить род или число субъекта («она была актрисой»).

Уточняйте выдачу, если вам нужна конкретная часть речи.
Подвохи
1. Незнакомые слова могут лемматизироваться и подсчитываться некорректно. Особенно часто это происходит с фамилиями. «Помидор», «Помидоров», «Помидорова» — это три леммы, которые могут относиться к одному и тому же человеку, мужчине по фамилии Помидоров.

2. Отчества могут лемматизироваться по мужскому роду. Например, вы лемматизируете сценарий «Папиных дочек» с главной героиней Галиной Сергеевной — а в списке частотных лемм видите «Сергеевич».

3. Названия компаний, клички, прозвища могут показаться обычным словом. Например, если в тексте про выращивание помидоров очень часто встречается слово «принц», это не значит, что принцы выращивают помидоры. Скорее всего, речь идёт о сорте растения.



4. Особенно внимательными нужно быть с иностранными словами. Имена на -о могут распознаваться как наречия. Например, написанное с маленькой буквы имя Бенито может выглядеть для компьютера очень похоже на наречие «богато».

5. Слова общего рода и похожие на них могут неправильно интерпретироваться по роду. Особенно это важно с именами собственными. Можно ориентироваться на суффиксы и окончания, характерные для слов общего рода: -ака, -са, -ина, -яга, -ыга, -у/юка, -у/юля , -уша. Примеры слов общего рода: кусака, плакса, жадина, трудяга, злюка, чистюля.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website