Sunday, June 17, 2012

NLTK pyMorphy

http://nltk.org/

В качестве базиса для создания частотного словаря можно использовать два подхода:

  • Стемминг (stemming) – этим термином обозначается процесс выделения корней слов. Поместив в стеммер "сладкий" и "сладок" мы получим на выходе в первом и втором случае корень "слад". Соответственно, частотный словарь составляется для корней слов, а потом выбирается "базовое" слово для отображения на схеме. Подобные системы, основанные на статистических или эвристических правилах словообразования, являются основой поисковых систем Яндекс, Google и т.д.
  • Системы морфологического анализа – это более сложные продукты, включающие обширную языковую базу, словарь, правила слоовообразования и т.д. Такие системы обладают возможностью не только идентифицировать часть речи введённого слова, но и могут вывести словоформу в заданном падеже или склонении.

Оба подхода более-менее близки с точки зрения реализации, отличаясь лишь на несколько строк текста в программе на языке Python. Для реализации программы создания частотного словаря удобно использовать пакет Natural Language Toolkit (NLTK), т.к. он содержит в себе ужеготовые процедуры построения частотных словарей и алгоритм стемминга Snowball для русского языка.

Чтобы провести морфологический анализ русского языка NLTK уже не достаточно и требуетсяPyMorphy. Этот пакет позволяет сформировать нормальную форму для любого слова, имеющегося в словаре программы. Помимо этого, пакет учитывает омонимы и выводит нормальные формы для них тоже. Пример программы на языке Python, реализующий второй подход, доступен по ссылке.

Поместив в эту программу стенограмму интервью Д.А. Медведева, мы получаем следующий частотный словарь (фрагмент):

БЫТЬ : 34
СТРАНА : 24
БРИКС : 21
ВОПРОС : 20
РЕЗОЛЮЦИЯ : 18
ЧТОБЫ : 17
ГОСУДАРСТВО : 15
ОЧЕНЬ : 14
ГОВОРИТЬ : 13
ДОЛЖЕН : 13
МЕХАНИЗМ : 13
ПОТОМУ : 11
...

Для визуализации используем сервис Tagxedo, который умеет обрабатывать не только данные в виде текста (для русского языка без нормализации), но и собственно частотные словари. Обратите внимание, что для нашего частотного словаря в настройках Tagxedo нужно указать, что разделителем текста и частоты слов является не просто знак двоеточия, а комбинация пробел-двоеточие-пробел. Сервис Tagxedo также предлагает возможность создания артистических облаков слов, используя шаблоны размещения слов, цветовую схему и т.д. В нашем случае, мы используем портрет А. Линкольна и цветовую схему "Aye aye, Captain!". Результат работы сервиса приведён на рисунке ниже:

Частотный словарь, представленный в виде облака слов (как хорошо этот термин характеризует каждого из нас в отдельные моменты жизни), в большей степени является художественным инструментом, нежели удобным способом анализа данных. Тем не менее, для некоторых случаев он подходит как никогда лучше: в программных документах и речах политических лидеров, которые повторяются год от года и, зачастую, не содержат новых идей, можно проследить эволюцию акцентов и увидеть те изменения, которые появляются в сообщениях от правящего класса своим согражданам.

No comments:

Post a Comment