Александър Иванов
cream в режим „expert“
г) Работа с пунктуацията
Предполагам, че вече сте направили от текста си списък от думи, както е показано в предишния пример в) Списък от думи (лекси). Сега остава да решим какво ще правим с пунктуационните знакове.
Пунктуацията няма почти никакво значение за глотометричното изследване. Причините за това са ясни — пунктуацията или не отговаря на никакъв феномен в речта (например, запетайката пред съюза „че“), или отразява феномена много неадекватно (например, въпросителната интонация чрез въпросителния знак). Изключение правят, разбира се, само изследвания върху правописни въпроси. Иначе казано — не се придържайте към „формални правила“, обработвайте текста си спрямо целта на изследването си.
Ще разгледам следните случаи:
Премахване на пунктуацията
Това е необходимо, когато искаме да направим от списъка речник. Но не можем да премахнем всички пунктуационни знакове (нито всички не-букви) — помислете какво ще стане в тези случаи: по-голям, Д'Артанян, filename.txt, 3,14 и др. Следователно трябва да премахваме пунктуацията само пред и след лексата.
Но можем да срещнем една допълнителна трудност. Ако сте поставяли знак за ударение непосредствено пред гласната, както препоръчвам, той може да попадне пред лексата, например `агне, `Aнгел, `ябълка. Затова е разумно да отстраняваме символите пред думите с изброяване. Пред лексата може да има отваряща кавичка или отваряща скоба, нека да включим и тирето и шпацията (вижте работата с тиретата в предишния пример). Тогава
:%s:^[-\s"(]\+::
Премахването на пунктуационните знакове в края на реда (след лексата) е по-лесно да стане чрез допълнителното множество на буквените символи:
:%s:[^A-Za-zА-я]*$::
Разбира се, ако освен кирилските и латинските букви в текста има и други символи — например, букви с диакритични знакове, гръцки букви, математически символи, трябва да ги включите и тях в множеството. Някои текстове — езиковедските, математическите, физическите или химическите — могат да изискват повече внимание. В тези случаи речникът на наличните символи в текста става много необходим (вижте по-горе а) Списък на символите в текста).
Отделяне на пунктуацията
:%s:\(^[^А-я`]\+\)\([А-я]\):\1\r\2:
Така се отделя групата пунктуационни знакове в началото на лексата. Обърнете внимание, че използвам допълнението на множеството от кирилските букви и знака за ударение — ако в текста има латински букви, ще си имам неприятности… И по подобен начин се отделят групите пунктуационни знакове в края на лексата:
:%s:\([А-я]\)\([^А-я]\+\)$:\1\r\2:
Разбира се, ако имате некирилски букви в текста, необходимо е да ги включите.
Ако тирето е било обработено, както показах в предишния пример в) Списък от думи (лекси), сега пак имаме два случая. След тирето, което е било в началото на абзаца, сега има шпация; и обратното — тире, което е било вътре в абзаца, се предхожда от шпация. И това съвсем не е лошо, защото се предполага, че правите това разделение, за да изследвате пунктуацията, а така са обособени всички групи пунктуационни знакове, включително съдържащите шпация — например <запетая><шпация><тире>.
Скандализира ли ви, че в групите пунктуационни знакове ви предлагам да включите шпацията?
Ма нали се разбрахме, че не работим „по учебника“, а мислим със собствения си акъл? Ето ви пример за размисъл: комбинацията <шпация><тире><запетая> е недопустима в българската пунктуация и най-редовна в руската.
Ама ако тръгнете да изследвате групи пунктуационни знакове, ще ви трябва още находчивост: как ще отбелязвате, например, „преместването“, „отмета“ на запетаята в този често срещан случай:
— Недей — каза той, — не прави това!
В края на темата за пунктуацията ще направя едно филологическо отклонение.
Когато филологът експериментира с различни програми за „разчупване“ (tokenization) на текст, той с известно недоумение установява, че всеки пунктуационен знак обикновено се отделя като самостоятелна единица (token). И в синтактичния анализ пунктуационните знакове също често се обработват като самостоятелен синтактичен елемент. Защо е така?
Преди всичко, защото с това се занимават информатици. Но информатиците са обучавани да „разчупват“ и да анализират синтаксиса най-вече на програмни текстове, на текстове, съдържащи програми на някакъв програмен език. А там — в програмните езици — не само пунктуационните, но и други небуквени символи имат съвсем определена синтактична функция. Та информатиците са склонни понякога да надценяват ролята на пунктуацията и в други писмени текстове — дори в забележителния програмен пакет NLTK (Natural Language Toolkit) подразбиращият се „tokenizer“ работи така, обаче там са създадени и други, по-разумни за филолога възможности.
Има и още причини, чисто технически, да се отделя пунктуацията от „думата“. Например, когато подредите по азбучен ред (сортирате) списъчно представяне на текст с пунктуацията, формите (Няма и "няма ще се наредят при пунктуацията, а в реда на буквите ще се създадат отделни статии за всички варианти на лексата с различни пунктуационни знакове след нея. Затова препоръчвам да се премахва пунктуацията преди направата на рангови или фреквентни речници (вж. пример Направа на фреквентен или рангов речник).
Ако пък използвате някаква програма, приписваща на лексите някакви характеристики, например морфологични (в английската терминология такива програми се наричат taggers, а маркерът, който поставят — tag), пунктуационните знакове пред и след лексата много ще изненадват програмата и резултатът от работата й, най-вероятно, ще бъде незадоволителен. Но това е друга тема достатъчно обширна за друг разказ.