Лого на страниците (малко).

Заглавна страница > Четива > Четива за глотометрията > cream в режим „expert“ > Конкорданс

 

Александър Иванов

cream в режим „expert“

Конкорданс

Конкорданс е извадка от текста, обхващаща дума или израз заедно с определен ляв и десен контекст. Ето пример:

         *cream В РЕЖИМ "ЕКСПЕРТ"*
                 *РЕЖИМ "ЕКСПЕРТ"*
   И ЗАМЕСТВАНЕ В РЕЖИМ "ЕКСПЕРТ"*
върху vim, като режимът "Експерт" дава достъп до възможностите
                 *РЕЖИМ "ЕКСПЕРТ"*
   да преминете в режим "експерт", трябва да натиснете Esc.

Тук е представено началото на конкорданс, в който е изведен изразът „експерт“ от моя текст (навярно след това съм го редактирал — това е само пример!) с ляв и десен контекст от четири думи. Където контекстът е по-кратък, той е „отрязан“ от началото или края на абзаца.

Филолозите обичат конкорданси — те им напомнят чекмеджетата с фишове „ексцерпиран материал“ и им носят удовлетворяващото усещане за много свършена работа. Освен това от конкордансите те си вадят примери и правят впечатляващи приложения. Затова информатиците пишат програми за конкорданси от десетилетия.

Тук просто няма как да не се сетя, че SIL (Summer Institute of Linguistics) разпространяваше програмен пакет с име The Linguist's Shoebox — помните ли кутиите от обувки, в които си събирахме фишовете? (Програмата вече не се поддържа.)

Ако обаче се позамислим, лесно ще видим безсмислието на подобна извадка от текста.

Първо, с най обикновено търсене из текста можем да видим същата информация. Ако си поиграете с регулярните изрази, може да получите и оцветяване на контекста, например така:

/\([^ ]\+\_s\{,1}\)\{,5}експерт\(\_s\{,1}[^ ]\+\)\{,5}

(Това сигурно може да се измисли и по-умно… Опитайте!)

Второ, като направите конкорданс, губите количествената информация за явлението — от конкорданса единствено може да научите колко пъти в текста се е срещнал изразът (в примера — „експерт“). Но това може да научите и със заместване чрез флага n. А тази сума, дори да я представите в проценти (например спрямо всички лекси в текста), не дава достатъчно информация за математикостатистическото разпределение на явлението.

Както и да е.

За най-простия начин да направим конкорданс аз споменах в раздела Командата g (global):

— Изчистете някой регистър, например x (qxq).

— Съберете в него всички редове (абзаци), в които се среща „експерт“:

:g/\<експерт\>/ y X

— Създайте нов текстов буфер (:new) и препишете в него съдържанието на регистър x ("xp).

— Запишете го като нов файл.

Недостатъкът на този подход е, че контекстът е доста голям — обхваща целия абзац. Ако търсите някаква по-съществена глотометрична характеристика, например търсите съюзи или предлози, или представки/наставки, вероятно ще препишете просто целия текст…

Вторият подход е да търсим шаблон с определен контекст, като този, който вече посочих. Тук обаче има техническа трудност — командата global обработва цели редове (абзаци), а ние искаме да съхраняваме само маркирания текст. Затова ще трябва да използваме функцията CopyMatches, за която стана дума в раздела Макроезик. Заредете функцията от файла CopyMatches.vim:

:so CopyMatches.vim

Изградете си правилно шаблон за търсене (функцията работи с последния шаблон за търсене, тоест взема го от регистъра "/) и когато сте доволни от търсенето, стартирайте функцията:

:CopyMatches

Сега отворете нов буфер и копирайте в него резултата ("+p). Функцията CopyMatches „събира“ резултата в регистъра "+, тоест, той е достъпен и от всяка друга програма.

Остава малко да подредите редовете и ето че имате прекрасно приложение към вашия труд:

             *cream В РЕЖИМ "ЕКСПЕРТ"*
                     *РЕЖИМ "ЕКСПЕРТ"*
       И ЗАМЕСТВАНЕ В РЕЖИМ "ЕКСПЕРТ"*
    върху vim, като режимът "Експерт" дава достъп до възможностите
                     *РЕЖИМ "ЕКСПЕРТ"*
       да преминете в режим "експерт", трябва да натиснете Esc.
                    В режим "експерт" вие придобивате достъп до
  С преминаването към режим "експерт", вие влизате в т.
  Когато минавате към режим "експерт" убедете се, че сте
   Кирилските букви в режим "експерт" или нищо не правят,
        малки букви в режим "експерт" е значеща.
cream многократно. В режима "експерт"
          клавиша v в режим "експерт", курсорът се променя така,
             си го в режима "експерт" чрез Ctrl+v.
       Разбира се, в режима "експерт" има още повече възможности:
                    В режим "експерт" има лесен начин да
        vim (тоест, в режим "експерт") може да изпълните всяка
       И ЗАМЕСТВАНЕ В РЕЖИМ "ЕКСПЕРТ"*
      две действия в режима "експерт" са несравнимо по-големи.

и т. н. Оцветете търсеното и го отпечатайте цветно, за да е по-впечатляващо.

Подреждането е малко досадна работа. То сигурно също може да се автоматизира в cream, но не се досещам как да стане, а и не ми се занимава с това. Ако някой знае или има идеи, да пише. А аз само ще подскажа — във всеки програмен език тази работа е пипкава и досадна, но елементарна.

Понякога информатиците определят контекста не в брой думи, а в брой знакове. Шаблонът в такъв случай е по-прост, например:

/.\{,30}експерт.\{,30}

Контекстът е от 30 символа вляво и вдясно (ако ги има в абзаца). По подобен начин е решен и въпросът с контекста в NLTK.

Накрая искам да добавя, че когато през 60-те години е правен фреквентният речник и глотометричният архив в Софийския университет, студентите са фиширали думите с още две думи ляв контекст и с две думи десен контекст. Янакиев е установил, че това е достатъчно за сваляне на омографията и е минимизирал работата на студентите си.

Страница: А. И.
Електронна поща
Дата на публикуване: 15.V.2014
Последна редакция: 27.IV.2023
Съобразено с
html5/css3