OLAP.ru | OLAP, data mining, analysis, данные, СУБД, генераторы отчетов, проектирование, принятие решений, оптимизация, хранилише, извлечение, поиск, Crystal, Business Objects, Cognos, SAS... Полный список » |
Business intelligence - effective data mining & analysis |
|
|
Частотный анализатор английских слов на Python 3, умеющий нормализовывать слова с помощью WordNetЯ учу английский и всячески упрощаю этот процесс. Как-то мне потребовалось получить список слов вместе с переводом и транскрипцией для определенного текста. Задача не была сложной, и я принялась за дело. Чуть позднее был написан скрипт на python, все это умеющий, и даже умеющий чуть больше, поскольку мне захотелось получить еще и частотный словарь из всех файлов с английским текстом внутри. Так вышел маленький набор скриптов, о котором я и хотела бы рассказать. О чем будет дальше:
Частотный анализатор.Итак, начнем с простого, получим файлы, распарсим их на слова, подсчитаем, отсортируем, и выдадим результат.
Регулярное выражение для поиска английских словПростое английское слово, например "over", можно найти, используя выражение "([a-zA-Z]+)" - здесь ищется одна или более букв английского алфавита.
Реализация частотного анализатора английских слов
Напишем маленький класс, умеющий извлекать английские слова, считать их и выдавать результат.
На этом, в сущности, работа с частотным словарем могла бы быть и закончена, но наша работа только начинается. Все дело в том, что слова в тексте пишутся с учетом грамматических правил, а это значит, что в тексте могут встретиться слова с окончаниями ed, ing и тд. По сути, даже формы глагола to be ( am, is, are) будут засчитываться за разные слова.
Лемматизатор английских словСуществуют два алгоритма - стемминг и лемматизация. Стемминг относится к эвристическому анализу, в нем не используются какие-либо базы. При лемматизации используются различные базы слов, а также применяются преобразования согласно грамматическим правилам. Мы для наших целей будем использовать лемматизацию, поскольку погрешность результата намного меньше, чем при стемминге. Про лемматизацию уже было несколько статей на хабре, например вот и вот. Они используют базы aot. Мне не хотелось повторяться, а также было интересно поискать какие-нибудь другие базы для лемматизации. Я хотела бы рассказать проWordNet, на нем лемматизатор мы и построим. Начну с того, что на официальном сайте WordNet можно скачать исходники программы и сами базы данных. WordNet умеет очень много, но нам потребуется лишь малая часть его возможностей - нормализация слов. Как видно из диаграммы, нормализуются только 4 части речи (существительные, глаголы, прилагательные и наречия). Базовый класс для частей речи BaseWordNetItem.py
Класс для нормализации глаголов WordNetVerb.py
Класс для нормализации существительных WordNetNoun.py
Класс для нормализации наречий WordNetAdverb.py
Класс для нормализации прилагательных WordNetAdjective.py
Класс для лемматизатора Lemmatizer.py
Ну вот, с нормализацией закончили. Теперь частотный анализатор умеет нормализовывать слова. Переходим к последней части нашей задачи - получение переводов и транскрипции для английских слов.
Переводчик иностранных слов, использующий словари StarDictПро StarDict можно писать долго, но основное преимущество этого формата то, что для него есть очень много словарных баз, практически на всех языках. На хабре еще не было статей на тему StarDict и пора восполнить это пробел. Файл, описывающий формат StarDict, обычно расположен рядом с самими исходниками. 1. Файл с расширением ifo - содержит непротиворечивое описание самого словаря;
3. Файл с расширением dict - содержит сами переводы, добраться до которых можно зная смещение до перевода (смещение записано в файле idx ). Не долго размышляя над тем, какие классы в итоге должны получиться, я создала по одному классу для каждого из файлов, и один общий класс StarDict, объединяющий их. Классы для перводчика StarDict: Базовый класс для элементов словаря BaseStarDictItem.py
Класс Ifo.py
Класс Idx.py
Класс Dict.py
Ну вот, переводчик готов. Теперь нам осталось только объединить вместе частотный анализатор, нормализатор слов и переводчик. Создадим главный файл main.py и файл настроек Settings.ini. Главный файл main.py
Файл настроек Settings.ini
Единственной сторонней библиотекой, которую нужно скачать и поставить дополнительно, является xlwt, она потребуется для создания файла в формате Excel (туда записывается результат).
ПослесловиеВсе исходники, описанные в этой статье, можно скачать на github.
|
Хостинг: SiliconTaiga Поддержка: Interface Ltd. | Обратиться по техническим вопросам |
|