Skip to content

Latest commit

 

History

History
80 lines (43 loc) · 10.8 KB

File metadata and controls

80 lines (43 loc) · 10.8 KB

Семинар 3: Mystem

Mystem

Запуск программ из командной строки

Кроме программ, которые имеют GUI (графический, оконный интерфейс), часто приходится использовать такие программы, которые управляются из командной строки. Ещё она называется терминалом или консолью.

Для того, чтобы запустить командную строку, в Windows нужно найти среди других программу cmd.

В начале того, что показывает интерфейс командной строки, обычно написано, какое место в системе программа считает рабочим. Например, C:\Users\student. После этого обычно мы видим знак т.н. приглашения командной строки, то есть сигнал того, что программа готова к работе и ждёт действий от пользователя. В Windows это обычно знак больше, >.

С помощью набора команд, которые отправляются на исполнение с помощью клавиши Enter, можно передвигаться по диску и запускать другие программы.

Запуск программ обычно выглядит так. Сначала нужно написать путь к запускаемой программе: C:\some_prog.exe. Путь может быть и абсолютным, и относительным. Считается он относительно того места, которое показывается перед приглашением.

Иногда программы нужно запускать не сами по себе, а с определёнными аргументами или ещё их называют параметрами (похоже на аргументы функции в питоне). Тогда эти аргументы пишутся после пути к программе через пробел. Если сам аргумент тоже содержит пробел, его нужно обернуть в кавычки: C:\some_prog.exe argument1 "argument 2"

Кроме того, среди таких аргументов есть такие, которые принято называть опциями или ключами, они начинаются с символа дефиса: C:\some_prog.exe -a -b. Их можно "склеивать": C:\some_prog.exe -ab.

Какие у программы возможны аргументы и опции, в каком порядке они должны идти при запуске из командной строки, обычно описано в документации к программам.

Через командную строку можно, например, запускать скрипты на питоне. Тогда запускаемой программой будет интерпретатор питона, а аргументом -- путь к собственно скрипту: C:\Python34\python.exe C:\myscript.py

Mystem

Mystem - это свободно распространяемый морфологический анализатор для русского языка с закрытым исходным кодом. То есть мы можем его бесплатно скачать с сайта и пользоваться им, но не можем посмотреть, что у него внутри и как оно работает.

Mystem был придуман одним из создателей Яндекса Ильёй Сегаловичем. Некоторый потомок mystem'а до сих пор работает внутри большого поисковика Яндекса, анализируя слова при поиске.

My-stem значит my stemmer, стемминг -- это разбиение формы на основу и флексию. Но на самом деле Mystem может гораздо больше: устанавливать словарную форму слова, определять часть речи и грамматическую форму слова. В последних версиях Mystem умеет и выбирать из нескольких возможных грамматических разборов один, наиболее верный.

У Mystem нет графического оконного интерфейса, запустить его можно только из командной строки.

Скачать Mystem можно отсюда, а тут лежит его документация.

Mystem не требует специальной инсталляции в систему. Достаточно, чтобы исполняемый файл с программой, подходящей для вашей версии операционной системы, находился на вашем компьютере.

Как читать документацию Mystem

На странице документации описаны разные возможности вызова Mystem из командной строки. В зависимости от параметров, с которыми мы вызовем программу, мы получим разный результат.

Примеры, которые там приведены, рассчитаны на пользователя Unix-подобной операционной системы. То есть не Windows.

В начале примеров вызова стоит знак доллара, $. Это не значит, что его вам тоже нужно набирать, если вы хотите воспроизвести эти примеры. Доллар -- это аналог приглашения командной строки, просто не в Windows, а в Unix-подобных системах. Если вы берете примеры вызова со страницы документации за основу, игнорируйте знак доллара.

В документации написано: $ mystem input. На практике для пользователей Windows это будет значить что-то вроде C:\mystem.exe input.txt.

В документации написано "стандартный ввод" и "стандартный вывод", это значит то, что вводится в командной строке или выводится в тот же терминал. Если не используются стандартный ввод и вывод, то используются файлы (выводной файл Mystem способен создать сам).

В 3-й версии Mystem кодировка по умолчанию -- utf-8. В первых версиях -- cp1251. Кодировка по умолчанию в командной строке Windows -- cp866. Из-за этого Mystem может не понимать слова, которые попадают к нему из стандартного ввода.

Как запускать Mystem

Об этом довольно хорошо и подробно написано на странице документации, её нужно внимательно изучить и попробовать разные вариант опций.

Особое внимание нужно уделить опции -d, она заставляет анализатор выбирать только один разбор из возможных. При этом выбор происходит только между разными частями речи. Если у одной части речи возможны разные разборы (например, разные падежи одного и того же существительного), то эти разборы не отбрасываются. Иначе говоря, Mystem снимает только частеречную омонимию. Омонимию форм он не снимает.

Как запускать Mystem из питона?

Для запуска сторонних программ, имеющих интерфейс командной строки, в питоне есть system, предоставляемая модулем os: os.system("C:\mystem.exe input.txt output.txt"). Перед добавлением такой конструкции в код, необходимо импортировать модуль os.

Это нужно, чтобы, например, обработать много файлов циклом:

import os
inp = "input_texts"
lst = os.listdir(inp)
for fl in lst:
    os.system(r"C:\mystem.exe " + inp + os.sep + fl + " output_texts" + os.sep + fl)

Этот код берёт из директории input_texts все лежащие в ней файлы, отдаёт на разметку майстему и кладёт результат в соседнюю директорию output_texts.

Есть возможность запускать mystem и с помощью специального модуля, pymystem3 (и некоторых других), который нужно специально установить (его нет в стандартной сборке питона). Исходники pymystem3 и вся документация лежат вот тут. Это проще и удобнее, потому что с тем, что выдаёт mystem, можно сразу работать как с питоновскими структурами данных. Но медленнее. Иногда гораздо-гораздо медленнее, чем разметить один файл mystem'ом сразу.

Задание

Скачать mystem и попробовать разные опции его запуска на практике. Посмотреть, чем результат вызова с одними опциями отличается от результата вызова с другими опциями.