-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Генерация текстового корпуса
Участвующие скрипты: parser.py, ourwikicorpus.py, ourutils.py
Основной скрипт: pareser.py
Input: ссылка на архив с дампом википедии(.../enwiki-XXXXXXX-pages-articles.xml.bz) и число статей на одну букву алфавита (цифру).
Output: каталог pioNER_Wiki_Articles в рабочей директории, содержащий 37 папок (для каждой буквы, цифры и different - для статей, названия которых начинаются не с англ. буквы и не цифры)
В ветке Development есть файл Enteties.txt, который содержит сущности DbPedia, которые мы хотим выделять в статьях. Также для работы необходима папка NewWikiEntities, которая содержит несколько файлов - для каждой сущности свой файл, при этом они должны называться Wiki*, то есть начинаться со слова Wiki, а дальше название сущности. Я также залил необходимые файлы в git, так что можно просто использовать их и не думать об этом.
Теперь про некоторые файлы:
- getNecessaryTypes.py получает необходимые сущности DbPedia и записывает их в файл. Он не очень красиво написан, да и все пути в нем захардкожены. Требуется refactoring, но совсем не первостепенно.
- links.py получает необходимые сущности, но уже в том виде, в котором они встречаются в Wikipedia, это как раз те файлы, которые хранятся в NewWikiEntities. Пути уже не закардкожены, но написано все еще не очень оптимально.
Эти файлы (1-2) очень редко используются, поэтому можно "забить" на них на некоторое время.
- helper.py вспомогательный файл, который структурирует информацию, полученную от Даши, и делает костяк корпуса. Тоже не очень полезный для общества файл.
Теперь про полезное.
Получение файла с Json-разметкой для одной статьи
Этим занимается файл mainOneArticle.py. Файл получает на вход 5 параметров:
- Entities.txt (см. описание выше), дефолтное значение Entities.txt в текущей директории;
- NewWikiEntities (см. описание выше), дефолтное значение NewWikiEntities в текущей директории;
- article - статья Wikipedia, дефолтное значение article в текущей директории;
- links - файл, содержащий все сущности, встречающиеся в данной статье, дефолтное значение links в текущей директории;
- res.json - файл, в который будет сохранен ответ, дефолтное значение res.json в текущей директории.
Собственно, все))) Файл с разметкой готов.
Работа программы состоит из трех блоков:
- get wiki types: выделение тех сущностей статьи, которые подходят под те, которые мы ищем(файлы в NewWikiEntities)
- lemmatizer: лемматизация статьи и сущностей, сопоставление ссылок в оригинальной статье и лемматизированной.
- references: проставление всех ссылок
Получение корпуса, т.е. список упорядоченных статей Этим занимается файл mainCorpus.py. Файл получает на вход 3 параметра:
- Entities.txt (см. описание выше), дефолтное значение Entities.txt в текущей директории;
- NewWikiEntities (см. описание выше), дефолтное значение NewWikiEntities в текущей директории;
- Corpus - корпус, то есть упорядоченный список статей, разбитых по папкам, содержащим article, links. Дефолтное значение Corpus в текущей папке.
Программа просто пробегает по всем папкам и получает для каждой пары article/links res.json.
Просмотр результата работы
marking.py - файл, который генерирует htmlку с разметкой, на вход получает три файла:
- Статья
- Файл с разметкой
- Выходной файл с html.
Дефолтных значений не предусмотрено.
Вот, кажется, и все.