From 46a46821b37bc5e11065304c0e9494a667a66c25 Mon Sep 17 00:00:00 2001 From: Bartlomiej Niton <bartek.niton@gmail.com> Date: Wed, 25 Jan 2017 16:07:01 +0100 Subject: [PATCH] Added preferable spejd config to resources directory. --- src/main/resources/spejd_config/config.ini | 320 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/spejd_config/rules.sr | 8103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/spejd_config/sample.cfg | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 8533 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/spejd_config/config.ini create mode 100644 src/main/resources/spejd_config/rules.sr create mode 100644 src/main/resources/spejd_config/sample.cfg diff --git a/src/main/resources/spejd_config/config.ini b/src/main/resources/spejd_config/config.ini new file mode 100644 index 0000000..9bd375c --- /dev/null +++ b/src/main/resources/spejd_config/config.ini @@ -0,0 +1,320 @@ +# +# FILES LOCATION +# all paths in this file are relative to location of this config file, +# except for absolute paths +# (in UNIXes starting from '/', in Windows starting from '<letter>:\' or '\') +# + +# a file containing Spejd's grammar +# in this example file you can find the Spejd rules syntax explained +rules = rules.sr + +# tagset used in grammar and input/output +# see that file for details on used format +tagset = sample.cfg + +# +# PROCESSING CHAIN +# + +# list of tools to be executed between reader and writer modules + +# for spejd with preprocessing with dictionary +# (dictionary entries may be multiple - with different names after colon, see below) +# processingChain = dictionary:example_dict spejd + +# spejd preceded with the pantera tagger (Spejd must have pantera support built in) +# processingChain = pantera spejd + +# spejd alone (the default) +processingChain = spejd + +# no tools (only reader and writer) - can be used as format converter +# processingChain = + +# number of threads to use, 0 means autodetect ( = number of detected cpus) +maxThreads = 0 + +# +# INPUT +# + +# inputType: auto|xcesAna|tei|txt +# auto chooses reader basing on the file name / extension: +# - *.txt/*.txt.gz = txt +# - morph.xml/morph.xml.gz = xcesAna +# - ann_segmentation.xml/ann_segmentation.xml.gz = tei, without using morphosyntax +# - ann_morphosyntax.xml/ann_morphosyntax.xml.gz = tei, using morphosyntax +# with txt and tei without morphosyntax the Morfeusz morphological analyzer is used (unless disabled) + +inputType = auto + +# encoding of input files (overrides any XML coding tags!) +# +# note: the acronymsAfter, acronymsBefore options, and contents of various files +# such as ogonkifyFile, morfeusz disambiguation rules or dictionaries must be +# in this encoding too. +inputEncoding = UTF-8 + +# regexp describing names of input files +# to look for when traversing directories given in command line +# does not affect file names given explicitly in command line + +inputFiles = morph\.xml(\.gz)?|.*\.txt(\.gz)?|ann_morphosyntax\.xml(\.gz)? + +# to ignore any disambiguation found in input? + +ignoreDisamb = no + +# Spejd can use XML id attributes available in the input. Sometimes this may cause +# problems (e.g. duplicate id values in the scope of file), so can be turned off +ignoreIDs = no + +# +# OUTPUT +# + +# format of the output file(s): tei|xcesAna|null +# null = for testing only, does not write anything + +outputType = tei + +# can interpretations deleted by Spejd be discarded at will (yes) +# or should be preserved for the final output (no)? + +discardDeleted = yes + +# the suffix to be added to the target file name + +outputSuffix = .xml + +# The core name of the output file. Depending on the output type +# some infixes can be added between it and output suffix. +# Caution: this option replaces the name of the input file. +# With output suffix containing only extension equal to extension of +# the input file (e.g. .xml for the XML input file) spejd will +# overwrite input files with output. +# +# Leave empty or comment out to use the input file name instead. + +outputFilenameCore = ann + +# If set to 'yes' spejd will backup existing output files to <name>.bak + +backupExistingFiles = no + +# apply gzip compression to output? + +compressOutput = yes + +# put <f>'s in single line and omit empty sentences/paragraphs when writing tei? + +compactTeiOutput = no + +# NKJP (National Corpus of Polish) compatibility mode: +# dont write <f name="interps"> and <fs type="lex"> in *_words.xml +# assuming that there can be only one interpretation marked as "correct" for each token. +# +# It is a user task to make sure that there will be no tokens with multiple +# correct interpretations +teiSingleSyntokInterp = yes + +# again, NKJP compatibility: +# place group's heads information inside the <fs type"group"> +# as features instead of marking it as 'type' attribute of group's elements +teiFsGroupHeads = yes + +# for backward compatibility with Spejd 1.2, it is probably easier to parse structures +# written in bottom up order, starting from leafs to the root +# (all entities defined before referencing) +teiBottomUpSyntacticStructures = no + +# DIAGNOSTICS + +# report progress every reportInterval seconds +# use 0 to completely disable progress reports + +reportInterval = 5 + +# more verbose reports? +debug = no + +# mark which rule has deleted an interpretation? + +ruleMarking = no + +# are tag/tagset errors fatal? +# If turned on, Spejd will try to its best to output only tags conforming the tagset, +# but they may be useless. +# This option exists only to preserve compatibility with older versions of Spejd, which +# accepted incorrect rules. Please do not use when developing new grammars. +# +# !!! use at your own risk and don't report crashes when using this option !!! +nonfatalTagErrors = no + +# if to silence the (nonfatal) tag errors? +muffleTagWarnings = no + +# Disable correctness checks of tags in between rules execution? +# If set, tags can be temporary incomplete or incorrect, but the usual validation +# before writing is stil performed to make sure Spejd will output only +# correct tags. +# Not recommended for developing new grammars. +tagErrorsOnlyOnTheEnd = no + + +###################################################################### +# MODULE-SPECIFIC OPTIONS +###################################################################### + + +# DICTIONARIES + +# list of files containing morphological dictionaries +# to be applied as "dictionary:example_dict" tool to the input +# the format of lines of files is: +# orthographic form,base (lexical) form:tag +# +# or: +# ,base (lexical) form:some_parts_of_tag;condition +# +# In the first variant the orthographical form is used for matching words. +# Tag definition is expanded (it may contain wildcards). +# +# In the second variant orthographic form is ommited. In that case a base form is used to match. +# The tags of existing interpretations which match the base form are corrected/modified +# according to the specified tag. +# This variant allows the tag to be not full/complete, but only specifying some +# of the attributes (some parts). +# This variant also allows to specify conditions on tag that must +# be meet to perform the modification. The condition has form of a partial tag, just like +# in the "tag" section of modifying variant. A condition restricts modified interpretations to +# that ones which have all values of the specified attributes among the specified values. +# If an attribute is ommited in the specification it means that there are no restrictions +# on this attribute value and it can be anything (including absence of value). +# When a condition is empty (that means: there are no restrictions on any attribute), +# a semicolon preceding it can be ommited and the format is: +# ,base (lexical) form:some_parts_of_tag +# +# The above two variants of entries can be mixed. +# All the entries with orthographic form are applied before applying any +# of the entries without orth in the scope of a single 'dictionary:<name>' tool, +# no matter in which file in this list they appear. +# +# The encoding of dictionary files must be the same as inputEncoding. +#dictionary:example_dict = sample_dict lexdictnum + + +# PANTERA CONFIGURATION + +# Pantera can use its own built-in tweaked version of Morfeusz. +# If this option is set, all interpretations set by reader +# or any tools preceding pantera in the toolchain are dropped +panteraDoOwnMorphAnalysis = yes + +# tagset for pantera, leave empty for a default (check pantera documentation for details) +panteraTagsetName = + +# pantera's engine, leave empty for a default (check pantera documentation for details) +panteraEnginePath = + + +# SPEJD SEMANTICS + +# default strategy for matching syntactic entities +# use * for greedy, + for possessive, ? for reluctant + +matchStrategy = * + +# should agree(case,1,2) return true, if both 1 and 2 have no case? + +nullAgreement = no + +# SPEJD FSM INTERNALS + +# number of single-rule automata to be composed together, usually not needed to change +# Rule of thumb: if Spejd consumes much too much memory, it's better to decrease this +# number than to set very low memoryLimit - it gives smaller impact on performance +composeLimit = 150 + +# memory limit in megabytes +# when memory usage exceeds this limit the rarely-used states removal procedure +# (or GC, a garbage collector) is launched +# use as an emergency brake, for standard limit see above. +# The memoryLimit is approximate, actual memory usage may be slightly higher +# (it depends on memory allocator library buffers size) +memoryLimit = 1900 + +# approx. percent of DFA states to leave after the states removal +leavePercent = 80 + +# The definitive limit of normal GC usage. GC removes only complex states, so if there are lots +# of plain states it can't prevent from exceeding memoryLimit. If the percent of complex states +# is less than minComplexPercent, all the DFAs are dropped and they are built from the beggining +# just like if the spejd would be restarted. However it does not recompile rules, so it's faster. +minComplexPercent = 10 + + +# A maximal number of unicode characters which can appear in rules compiled to internal regex +# It must be higher than the highest number of values of a single attribute (including +# numeric attributes) and must be higher than a number of unique characters appearing in all rules. +# Setting too high can increase the memory usage. +maxNumberOfValues = 4000 + + +# BUILT-IN MORPHOLOGICAL ANALYZER 'MORFEUSZ' + +# disable Morfeusz completely, useful when some other tool replaces interpretations, e.g. pantera +disableMorfeusz = yes + +# Morfeusz produces ambiguous segmentation, which can be resolved by simple rule-based +# disambiguator. This option specifies a file to load rules from. +# The rule format is described in the example file +# (leave empty for the builtin default, which is actualy the example file) + +# The encoding of this file must be the same as inputEncoding. +morfeuszSegmentationDisambiguationRules = segm_disamb.conf + +# PLAIN TEXT READER - GENERAL + +# mock xml:id for the whole text input referred from the output in string-range notation +# (in TEI output it appears in *segmentation.xml) +stringRangeMockID = p-1 + +# PLAIN TEXT READER - SENTENCER + +# list of acronyms - +# if a dot is found after one of them, it is not a sentence break + +acronymsAfter = prof|dr|mgr|doc|ul|np|godz|gen|płk|mjr|por|tzw|tzn|proc|nt|art|ust|ww|www|ws|dz + +# list of acronyms (actually top level domain names) - +# if a dot is found before one of them, it is not a sentence break + +acronymsBefore = ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw + + +# PLAIN TEXT READER - OGONKIFIER + +# name of file with ogonkify (diacrit completion) substitutions +# the format is: +# <letter without diacritics>=<list of possible letters with diacritics separated by '|'> +# see the example ogonkifier.ini + +# The encoding of this file must be the same as inputEncoding. +#ogonkifyFile = ogonkifier.ini + +# when to use ogonkifier: +# A - Always, +# N - Never, +# M - only when the Morphological analyzer fails to analyse a word + +ogonkifyStrategy = N + +# min and max length of words to ogonkify + +ogonkifyMinLength = 3 +ogonkifyMaxLength = 13 + + + diff --git a/src/main/resources/spejd_config/rules.sr b/src/main/resources/spejd_config/rules.sr new file mode 100644 index 0000000..0ec1100 --- /dev/null +++ b/src/main/resources/spejd_config/rules.sr @@ -0,0 +1,8103 @@ +######Gramatyka dla projektu CORE +######Autor: Katarzyna Głowińska +######wersja z 15.02.2012 + +# MACRO DEFINITIONS + +Define czasownik = [pos~~"winien|praet|bedzie|fin|impt|imps|inf"]; + +Define lub_imieslow = + [pos~~"winien|praet|bedzie|fin|impt|imps|inf|pcon|pant|pred"]; + +Define lub_grupa = [synh=[]] | $lub_imieslow; + +Define tytul = [orth~"[Kk]s\.|[Hh]r\.|o\.|s\.|[Pp]\.|[Pp]s\.|[Rr]ed\.|[Pp]rof\.|[Dd]oc\.|[Dd]yr\.|[Mm]in\.|[Mm]ec\.|[Ii]nż\.|[Aa]rch\.|[Gg]en\.|[Gg]en\. gen\.|[Gg]en\. dyw\.|[Gg]en\. bryg\.|[Ss]t\. szer\.|[Ss]zer\.|[Kk]pt\.|[Pp]por\.||[Tt]ow\.|[Kk]ol\.|[Hh]m\.|[Dd]h\.|[Kk]om\.|[Nn]adkom\.|[Pp]odkom\.|[Pp]os\.||[Pp]łk|[Pp]płk|[Mm]jr|[Rr]tm|[Dd]r?|[Mm]gr|[Aa]bp|[Aa]bp\.|[Bb]p|[Bb]p\.|[Kk]ard\.|śp\.|Mr|[Ll]ek\. med\." && pos~"Brev"]; +Define tytul1 = [base~"porucznik"]; + +Define osoba = [base~".*burmistrz|król.*|redaktor.*|pan.?|państwo|aktor|doktor|prymas|szkoleniowiec|księżna|prorokini|babcia|szlachcic|rodzina|archeolog|kustosz|markiz|prezbiter|psycholog|prałat|biznesmen|fizyk|wójt|artystka|konserwator|rabbi|radny|brat|sir|obywatel|.*mistrz|finansista|harcerz|papież|scenograf|dziennikar.*|metodysta|autor|autorka|sędzia|ojciec|generał|mecenas|handlowiec|obrońca|.*minister|.*anin|.*biskup|kardynał|senator|.*premier|Polak|Duńczyk|Białorusinka|Włoch|Ukrainiec|Ukrainka|geolog|.*prezydent|ksiądz|magister|kurator|trener|poseł|posłanka|prezes|.*starosta|.*wojewoda|perkusista|basista|.*marszałek|kolega|ciotka|sekretarz|profesor|lobbysta|dyrektor|.*reporter|poet.*|reżyser|konserwatysta|de"]; + +Define adv_przy_adj = [pos~"Adv" && base~"zdecydowanie|trochę|nieuleczalnie|.*krotnie|chronicznie|szczególnie|wyłącznie|praktycznie|strasznie|rażąco|jakościowo|skrajnie|znacznie|niesłychanie|jawnie|czysto|ogólnie|stosunkowo|możliwie|równie|nowo|kompletnie|całkowicie|przesadnie|lekko|wyjątkowo|nieco|znacząco|zbyt|zdumiewająco|wyraźnie|niezwykle|średnio|zupełnie|niezbyt|bardzo|odpowiednio|całkiem|coraz|szaro|na tyle|mało|przewlekle|niezwykle|względnie|tak|prawnie|prawdziwie|.*proporcjonalnie|tymczasowo"]; + +Define qub_przy_adj = [pos~"Qub" && base~"jeszcze|dosyć|dość|naprawdę|nie|to|właśnie|około|zaledwie|nawet|przynajmniej|zgoła|tam|pseudo|już|jeszcze|niemal|jedynie"]; + +Define qub_przy_num = [pos~"Qub" && base~"dokładnie|niespełna|.*ledwie|ponad|za|już|prawie|nie|jeszcze|tylko|przeszło|około|nawet|aż|minimum|niemal"]; + +Define adv_przy_num = [pos~"Adv" && base~"ledwo|zbyt|znacznie|bardzo|niezbyt|tak|coraz|nieskończenie|wyjątkowo|jak|trochę|raptem|.*krotnie"]; + +Define instytucja = [orth~"[Kk]op\." && pos~"Brev"]; + + +# RULES + +#Rule "liczba -- liczba cyframi" +# +#Match: [orth~"[1-9][0-9]*"] (ns [orth~"[,-]"] ns [orth~"[0-9]+"])?; +#Eval: word(liczba,1.orth); +#AW: nie łapie się np. "0,5"? + +##########SŁOWA SKŁADNIOWE + +Rule "frazeo: a nuż" + +Match: [base~"a"] [base~"nuż"]; +Eval: word(Qub, 0.base); + + +#LD Tę regułę trzeba na razie wyłączyć, bo produkuje niepełne tagi. +#brak informacji morfologicznych dla Adj +#Rule "frazeo: a vista" +# +#Match: [base~"a"] [base~"vista"]; +#Eval: word(2, Adj, 0.base); + + +Rule "frazeo: a więc" + +Match: [base~"a" && pos~"conj"] [base~"więc" && pos~"conj"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: ani rusz" + +Match: [base~"ani"] [orth~"rusz"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: ani trochę" + +Match: [base~"ani"] [base~"trochę"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: ani w ząb" + +Match: [base~"ani|ni"] [base~"w"] [orth~"ząb"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: bądź co bądź" + +Match: [orth~"[Bb]ądź" && pos~~"impt"] + [base~"co" && pos~"comp"] + [orth~"bądź" && pos~~"impt"]; +Eval: word(Qub, "bądź co bądź"); + + +Rule "DisG: bądź co bądź" + +Match: [base~"bądź co bądź"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: bez mała" + +Match: [base~"bez" && pos~~"prep"] + [orth~"mała"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: bez trudu" + +Match: [base~"bez" && pos~~"prep"] [orth~"trudu"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: bez wątpienia" + +Match: [base~"bez" && pos~~"prep"] [orth~"wątpienia"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: bez względu na" + +Match: [base~"bez"] [orth~"względu"] [base~"na"]; +Eval: word(Prep:acc, "bez względu na"); + + +Rule "frazeo: blisko (Prep)" + +Match: [orth~"[Bb]lisko"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, "blisko"); + + +Rule "frazeo: bliżej (Prep)" + +Match: [orth~"[Bb]liżej"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, "bliżej"); + + +Rule "frazeo: najbliżej (Prep)" + +Match: [orth~"[Nn]ajbliżej"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, "najbliżej"); + + +Rule "frazeo: Bogu ducha winny" + +Match: [orth~"[Bb]ogu"] [orth~"ducha"] [base~"winny"]; +Eval: word(3, Adj, "Bogu ducha winny"); + + +Rule "frazeo: Brawo," + +Match: [orth~"[Bb]rawo"]; +Right: ns [base~","]; +Eval: word(Interj, 1.base); + + +Rule "DisG: Brawo," + +Match: [base~"brawo" && pos~"Interj"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: broń Boże" + +Match: [orth~"[Bb]roń"] [orth~"[Bb]oże"]; +Eval: word(Interj, "broń Boże"); + + +Rule "DisG: broń Boże" + +Match: [base~"broń Boże" && pos~"Interj"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: być może" + +Match: [orth~"[Bb]yć"] [orth~"może"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: chargé d’affaires" + +Match: [base~"chargé"] [base~"d'affaires"]; +Eval: word(1, Noun, 0.base); + + +Rule "frazeo: chyba że" + +Match: [base~"chyba"] [base~"że"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: co gorsza|więcej" + +Match: [base~"co"] [orth~"gorsza|więcej"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: co najmniej" + +Match: [base~"co"] [orth~"najmniej"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: co najwyżej" + +Match: [base~"co"] [orth~"najwyżej"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: co niemiara" + +Match: [orth~"co"] [base~"niemiara"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: co prawda" + +Match: [orth~"[Cc]o"] [orth~"prawda"]; +Eval: word(Qub, 0.base); + + +Rule "DisG: co prawda" + +Match: [base~"co prawda"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: co rusz" + +Match: [orth~"[Cc]o"] [orth~"rusz"]; +Eval: word(Adv, "co rusz"); + + +Rule "frazeo: co i rusz" + +Match: [orth~"[Cc]o"] [base~"i"] [orth~"rusz"]; +Eval: word(Adv, "co i rusz"); + + +Rule "frazeo: co tchu" + +Match: [orth~"[Cc]o"] [orth~"tchu"]; +Eval: word(Adv, "co tchu"); + + +Rule "frazeo: coraz to" + +Match: [base~"coraz"] [orth~"to"]; +Eval: word(Adv, "coraz to"); + + +Rule "frazeo: Cóż," + +Left: sb; +Match: [base~"cóż"]; +Right: ns [base~","]; +Eval: word(Interj, 2.base); + + +Rule "DisG: Cóż," + +Match: [base~"cóż" && pos~"Interj"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: dawno temu" + +Match: [orth~"[Dd]awno"] [base~"temu"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: do/u diabła" + +Match: [base~"do|u"] [orth~"diabła"]; +Eval: word(Interj, 1.base " " 2.orth); + + +Rule "DisG: do/u diabła" + +Match: ([base~"do diabła"] | [base~"u diabła"]); +Eval: group(DisG, 1,1); + + +Rule "frazeo: do/od rzeczy" + +Match: [base~"do|od"] [orth~"rzeczy"]; +Right: [case!~"gen"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: do cna" + +Match: [base~"do" && pos~~"prep"] [base~"cna"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: do spraw" +Match: [base~"do"] [orth~"spraw"]; +Right: [pos~~"subst|ger" && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: do syta i in." + +Match: [base~"do" && pos~~"prep"] + [orth~"czysta|naga|niedawna|ostatka|pełna|późna|sucha|syta|szczętu|upadłego|żywa"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: do widzenia" + +Match: [base~"do"] [orth~"widzenia"]; +Eval: word(Interj, 1.base " " 2.orth); + + +Rule "frazeo: do żywego (1)" + +Match: [base~"do"] [orth~"żywego"]; +Right: [case!~"gen"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: do żywego (2)" + +Match: [base~"do"] [orth~"żywego"]; +Right: ns [pos~"interp"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: dopiero co" + +Match: [base~"dopiero"] [orth~"co"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na dzień dobry" + +Match: [base~"na" && pos~"prep"] [orth~"dzień"] [orth~"dobry"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: dzień dobry" + +Match: [orth~"[Dd]zień"] [orth~"dobry"]; +Eval: word(Interj, 0.base); + + +Rule "frazeo: dziwnym trafem" + +Match: [orth~"[Dd]ziwnym"] [orth~"trafem"]; +Eval: word(Adv, "dziwnym trafem"); + + +Rule "frazeo: happy end" + +Match: [base~"happy"] [base~"end"]; +Eval: word(2, Noun, 0.base); + + +Rule "frazeo: gdzie|kiedy itp. indziej" + +Match: [base~"gdzie|gdzieś|gdziekolwiek|nigdzie|wszędzie|kiedy|kiedykolwiek"] [base~"indziej"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: expressis verbis" + +Match: [base~"expressis"] [base~"verbis"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: i to" + +Left: [base~","]; +Match: [base~"i" && pos~"conj"] [base~"to" && pos~"qub"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: in corpore" + +Match: [base~"in"] [base~"corpore"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: innymi słowy" + +Match: [orth~"[Ii]nnymi"] [orth~"słowy"]; +Eval: word(Qub, "innymi " 2.orth); + + +Rule "DisG: innymi słowy" + +Match: [base~"innymi słowy"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: inaczej mówiąc" + +Match: [orth~"[Ii]naczej"] [orth~"mówiąc"]; +Eval: word(Qub, "inaczej " 2.orth); + + +Rule "DisG: inaczej mówiąc" + +Match: [base~"inaczej mówiąc"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: i tak dalej" + +Match: [base~"i"] [base~"tak" && pos~"adv"] [orth~"dalej"]; +Eval: word(Qub, "i tak dalej"); + + +Rule "DisG: i tak dalej" + +Match: [base~"i tak dalej"]; +Eval: group(DisG, 1,1); + + +#LD Na razie wyłączyłam regułę, bo trzeba lepiej opisać kontekst. +#Rule "frazeo: i tak" +# +#Match: [base~"i"] [base~"tak"]; +#Eval: word(Qub, 0.base); +#? częściej Adv, ale trudno podać dobry kontekst + + +Rule "frazeo: jak dotąd" + +Match: [base~"jak"] [base~"dotąd"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: tak czy owak|siak" + +Match: [orth~"[Tt]ak"] [base~"czy"] [orth~"owak|siak"]; +Eval: word(Qub, 0.base); + + +Rule "DisG: tak czy owak|siak" + +Match: [base~"tak czy owak|tak czy siak"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: tak jakby (Comp)" + +Left: [base~","]; +Match: [base~"tak"] [base~"jakby"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: tak jakby (Qub)" + +Match: [base~"tak"] [base~"jakby"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: tak jak gdyby" + +Left: [base~","]; +Match: [base~"tak"] [base~"jak"] [base~"gdyby"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: jak gdyby (Comp)" + +Left: [base~","]; +Match: [base~"jak"] [base~"gdyby"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: jak gdyby (Qub)" + +Match: [base~"jak"] [base~"gdyby"]; +Eval: word(Qub, 0.base); +#[KG: może lepiej opisać kontekst (na razie wystarczy)] + + +Rule "frazeo: jak najbardziej (Interj)" + +Left: sb; +Match: [base~"jak"] [orth~"najbardziej"]; +Right: [pos~"interp"]? se; +Eval: word(Interj, 2.base " " 3.orth); #LD zmiana cyferek + + +Rule "frazeo: jak najbardziej (Adv)" + +Match: [base~"jak"] [orth~"najbardziej"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: jak też" + +Match: [base~"jak"] [base~"też"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: jako że|iż" + +Match: [base~"jako"] [base~"że|iż"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: jako żywo" + +Match: [base~"jako"] [base~"żywo"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: jednym tchem" + +Match: [orth~"[Jj]ednym"] [orth~"tchem"]; +Eval: word(Adv, "jednym tchem"); + + +Rule "frazeo: Jezus Maria" + +Match: [orth~"[Jj]ezus"] [orth~"[Mm]aria"]; +Eval: word(Interj, 0.orth); + + +Rule "frazeo: kick boxing" + +Match: [base~"kick"] [base~"boxing"]; +Eval: word(2, Noun, 0.base); + + +Rule "frazeo: krok po kroku" + +Match: [orth~"[Kk]rok"] [base~"po"] [orth~"kroku"]; +Eval: word(Adv, "krok po kroku"); + + +Rule "frazeo: krok w krok" + +Match: [orth~"[Kk]rok"] [base~"w"] [orth~"krok"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: krok za krokiem" + +Match: [orth~"[Kk]rok"] [base~"za"] [orth~"krokiem"]; +Eval: word(Adv, "krok za krokiem"); + + +Rule "frazeo: ku pamięci" +Match: [base~"ku"] [orth~"pamięci"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: latem|jesienią|zimą|wiosną" + +Match: [base~"lato|jesień|zima|wiosna" && case~"inst"]; +Eval: word(Adv, 0.orth); + + +Rule "frazeo: mało kto|co" + +Match: [orth~"[Mm]ało"] [base~"kto|co"]; +Eval: word(2, Noun, 0.base); + + +Rule "frazeo: Matko Boska" + +Match: [orth~"[Mm]atko"] [orth~"[Bb]oska|jedyna|[Śś]więta"]; +Eval: word(Interj, 0.orth); + + +Rule "frazeo: mimo to" + +Match: [base~"mimo|pomimo" && pos~~"prep"] [base~"to"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: mimo wszystko" + +Match: [base~"mimo|pomimo" && pos~~"prep"] [base~"wszystko"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: mniej więcej" + +Match: [orth~"[Mm]niej"] [orth~"więcej"]; +Eval: word(Qub, "mniej więcej"); + + +Rule "frazeo: mniej lub więcej" + +Match: [orth~"mniej"] [base~"lub|bądź"] [orth~"więcej|bardziej"]; +Eval: word(Adv, 0.orth); + + +Rule "frazeo: musztarda po obiedzie" + +Match: [base~"musztarda"] [base~"po"] [orth~"obiedzie"]; #LD zmiana orth na base w 1. el. +Eval: word(1, Noun, 1.base " " 2.base " " 3.orth); #LD dodano:"1, " + + +Rule "frazeo: na baczność" + +Match: [base~"na"] [orth~"baczność"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na bakier" + +Match: [base~"na" && pos~~"prep"] [orth~"bakier"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na bazie i in." +Match: [base~"na"] + [orth~"bazie|czele|drodze|gruncie|końcu|łamach|miarę|mocy|modłę|poczet|podstawie|progu|przeciąg|przełomie|przestrzeni|punkcie|rzecz|skalę|skutek|szkodę|środku|temat|tle|wypadek|wzór|zakończenie|zasadzie"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: na co dzień" + +Match: [base~"na"] [orth~"co"] [orth~"dzień"]; +Eval: word(Adv, 0.base); + +Rule "frazeo: na czas" + +Match: [base~"na" && pos~~"prep"] [orth~"czas"]; +Right: [case!~"acc"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na czele" + +Match: [base~"na"] [orth~"czele"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na dłuższą|krótszą metę" + +Match: [base~"na"] [orth~"dłuższą|krótszą"] [orth~"metę"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: na dobrą sprawę" + +Match: [base~"na"] [orth~"dobrą"] [orth~"sprawę"]; +Eval: word(Qub, "na dobrą sprawę"); + + +Rule "frazeo: na dobre i na złe" + +Match: [base~"na" && pos~~"prep"] [orth~"dobre"] [base~"i"] + [base~"na" && pos~~"prep"] [orth~"złe"]; +Eval: word(Adv, "na dobre i na złe"); + + +Rule "frazeo: na dobre" + +Match: [base~"na"] [orth~"dobre"]; +Right: [case!~"acc"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na dobry początek" + +Match: [base~"na"] [orth~"dobry"] [orth~"początek"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na dodatek" + +Match: [base~"na"] [orth~"dodatek"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: na domiar złego" + +Match: [base~"na"] [orth~"domiar"] [orth~"złego"]; +Eval: word(Qub, "na domiar złego"); + + +Rule "frazeo: na dwoje" + +Match: [base~"na"] [orth~"dwoje"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na golasa i in." + +Match: [base~"na" && pos~~"prep"] [orth~"golasa|głodniaka|pewniaka|stojaka|waleta|wariata"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na gwałt|głos" + +Match: [base~"na"] [orth~"gwałt|głos"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na jaw" + +Match: [base~"na"] [orth~"jaw"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na/w lewo/prawo" + +Match: [base~"na|w"] [orth~"lewo|prawo" && pos~"adjp"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na/od kiedy" + +Match: [base~"na|od"] [base~"kiedy"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na łeb, na szyję" + +Match: [base~"na"] [orth~"łeb"] ns [base~","]? [base~"na"] [orth~"szyję"]; +Eval: word(Adv, "na łeb, na szyję"); + + +Rule "frazeo: na odczepne i in." + +Match: [base~"na" && pos~~"prep"] [orth~"odczepne|odchodne"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na odczepnego i in." + +Match: [base~"na" && pos~~"prep"] [orth~"całego|głodnego|odczepnego|upartego"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na odchodnym i in." + +Match: [base~"na" && pos~~"prep"] [orth~"odchodnym|odjezdnym|wychodnym|wyjezdnym"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na odtrąbiono" + +Match: [base~"na" && pos~~"prep"] [orth~"odtrąbiono"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na odwrót|opak" + +Match: [base~"na"] [orth~"odwrót|opak"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: na ogół" + +Match: [base~"na" && pos~~"prep"] [orth~"ogół"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na oścież" + +Match: [base~"na" && pos~~"prep"] [base~"oścież"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na oślep" + +Match: [base~"na"] [base~"oślep"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na pewno" + +Match: [base~"na" && pos~~"prep"] [orth~"pewno"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: na pierwszy rzut oka" + +Match: [base~"na"] [orth~"pierwszy"] [orth~"rzut"] [orth~"oka"]; +Eval: word(Adv, 1.base " " 2.base " " 3.base " " 4.orth); + + +Rule "frazeo: na piśmie" + +Match: [base~"na" && pos~~"prep"] [orth~"piśmie"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na początku (Prep)" +Match: [base~"na"] [orth~"początku|wstępie"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: na początku (Adv)" + +Match: [base~"na"] [orth~"początku|wstępie"]; +Right: [case!~"gen"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na poczekaniu" + +Match: [base~"na"] [orth~"poczekaniu"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na powrót" + +Match: [base~"na"] [orth~"powrót"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na poziomie (Prep)" + +Match: [base~"na"] [orth~"poziomie"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: na poziomie (Adj)" + +Match: [base~"na"] [orth~"poziomie"]; +Right: [case!~"gen"]; +Eval: word(Adjc, 1.base " " 2.orth); + + +Rule "frazeo: na pozór" + +Match: [base~"na"] [orth~"pozór"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na przekór" +Match: [base~"na"] [orth~"przekór"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"dat"]; +Eval: word(Prep:dat, 1.base " " 2.orth); + + +Rule "frazeo: na przemian" + +Match: [base~"na" && pos~~"prep"] [base~"przemian"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na przykład" + +Match: [base~"na" && pos~~"prep"] [orth~"przykład"]; +Right: [case!~"gen"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "DisG: na przykład" + +Match: [base~"na przykład" && pos~~"Qub"]; +Eval: group(DisG, 1,1); + + +#Rule "frazeo: na przyszłość" +# +#Match: [base~"na"] [orth~"przyszłość"]; +#Eval: word(Adv, 0.base); +#odróżnić od "plany na przyszłość" + + +Rule "frazeo: na razie (Interj)" + +Match: [base~"na" && pos~~"prep"] [orth~"razie"]; +Right: [base~"!" && pos~"interp"]; +Eval: word(Interj, 1.base " " 2.orth); + + +Rule "frazeo: na razie (Adv)" + +Match: [base~"na" && pos~~"prep"] [orth~"razie"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na równi z" +Match: [base~"na"] [orth~"równi"] [base~"z"]; +Eval: word(3, Prep, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: na siłę" + +Match: [base~"na" && pos~~"prep"] [orth~"siłę"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na stałe" + +Match: [base~"na" && pos~~"prep"] [orth~"stałe" && pos~"adjp"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na szczęście" + +Match: [base~"na"] [orth~"szczęście"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na własne oczy|uszy" + +Match: [base~"na"] [orth~"własne"] [orth~"oczy|uszy"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: na własność" + +Match: [base~"na" && pos~~"prep"] [orth~"własność"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na wpół" + +Match: [base~"na" && pos~~"prep"] [orth~"wpół"]; +Right: [base!~"do"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na wprost (Prep)" + +Match: [base~"na" && pos~~"prep"] [orth~"wprost"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: na wprost i in." + +Match: [base~"na" && pos~~"prep"] + [orth~"wprost|przełaj|wyprzódki"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na wskroś" + +Match: [base~"na" && pos~~"prep"] [base~"wskroś"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na wszelki wypadek" + +Match: [base~"na"] [orth~"wszelki"] [orth~"wypadek"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: na wyrost|wznak" + +Match: [base~"na"] [orth~"wyrost|wznak"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na zakończenie|koniec" + +Match: [base~"na"] [orth~"zakończenie|koniec"]; +Right: [case!~"gen"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na złość" + +Match: [base~"na" && pos~~"prep"] [orth~"złość"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na/od zawsze" + +Match: [base~"na|od" && pos~~"prep"] [base~"zawsze"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: na -o (1)" + +Match: [base~"na" && pos~~"prep"] + [orth~".*o" && pos~~"adv" && base!~"bardzo|pewno"]; +Right: [pos!~"adj|pact|ppas"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na -o (2)" + +Match: [base~"na" && pos~~"prep"] + [orth~".*o" && pos~~"adv" && base!~"bardzo|pewno"]; +Right: ns [pos~"interp"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: na zewnątrz + gen" + +Match: [base~"na" && pos~~"prep"] [base~"zewnątrz"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: na/od/z zewnątrz" + +Match: [base~"na|od|z" && pos~~"prep"] [base~"zewnątrz"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: nad podziw|wyraz" + +Match: [base~"nad" && pos~~"prep"] [orth~"podziw|wyraz"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: nade wszystko" + +Match: [orth~"[Nn]ade"] [orth~"wszystko"]; +Eval: word(Qub, "nade wszystko"); + + +Rule "frazeo: nie lada" + +Match: [base~"nie"] [base~"lada"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: ni stąd, ni zowąd" + +Match: [base~"ni"] [base~"stąd"] ns [base~","] [base~"ni"] [base~"zowąd"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: non stop" + +Match: [base~"non"] [base~"stop"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: o krok od" +Match: [base~"o" && pos~"prep"] [orth~"krok"] [base~"od"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: o mało (co)" +Match: [base~"o"] [orth~"mało"] [orth~"co"]?; +Eval: word(Adv, 0.base); + + +Rule "frazeo: o wiele (1)" + +Match: [base~"o" && pos~~"prep"] [orth~"wiele" && pos~~"num"]; +Right: [base~"za"] [pos~"adj|adv" && degree~"pos"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: o wiele (2)" + +Match: [base~"o" && pos~~"prep"] [orth~"wiele" && pos~~"num"]; +Right: [pos~"adj|adv" && degree~"com"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: od czasu do czasu" + +Match: [base~"od"] [orth~"czasu"] + [base~"do"] [orth~"czasu"]; +Eval: word(Adv, "od czasu do czasu"); + + +Rule "frazeo: od dawna/nowa" + +Match: [base~"od" && pos~~"prep"] + [orth~"dawna|niedawna|pradawna|nowa|razu|zaraz"]; +Eval: word(Adv, 1.base " " 2.orth); + + +#LD zmieniłam regułę i rozmnożyłam +#info: rozmnożone, bo nie da się wziąć informacji od elementu spoza linii Match +Rule "frazeo: od groma + m1" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos~"adj|subst" && gender~"m1"]; +Eval: word(Num:pl:acc:m1:rec, 1.base " " 2.orth); +#przypadek "z sufitu" + +Rule "frazeo: od groma + m2" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos~"adj|subst" && gender~"m2"]; +Eval: word(Num:pl:acc:m2:rec, 1.base " " 2.orth); +#przypadek "z sufitu" + +Rule "frazeo: od groma + m3" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos~"adj|subst" && gender~"m3"]; +Eval: word(Num:pl:acc:m3:rec, 1.base " " 2.orth); +#przypadek "z sufitu" + +Rule "frazeo: od groma + f" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos~"adj|subst" && gender~"f"]; +Eval: word(Num:pl:acc:f:rec, 1.base " " 2.orth); +#przypadek "z sufitu" + +Rule "frazeo: od groma + n" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos~"adj|subst" && gender~"n"]; +Eval: word(Num:pl:acc:n:rec, 1.base " " 2.orth); +#przypadek "z sufitu" + +Rule "frazeo: od groma + brak NG" + +Match: [base~"od"] [orth~"groma"]; +Right: [pos!~"adj|subst"]; +Eval: word(Num:pl:acc:n:rec, 1.base " " 2.orth); +#przypadek i rodzaj "z sufitu" + + +Rule "frazeo: od kuchni" + +Match: [base~"od"] [orth~"kuchni"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: od niechcenia" + +Match: [base~"od" && pos~~"prep"] [orth~"niechcenia"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: od początku (Adv)" +Match: [base~"od"] [orth~"początku"]; +Right: [case!~"gen"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: od przypadku do przypadku" + +Match: [base~"od"] [orth~"przypadku"] + [base~"do"] [orth~"przypadku"]; +Eval: word(Adv, "od przypadku do przypadku"); + + +Rule "frazeo: od stóp do głów" + +Match: [base~"od"] [orth~"stóp"] + [base~"do"] [orth~"głów"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.base " " 4.orth); + + +Rule "frazeo: od ucha do ucha" + +Match: [base~"od"] [orth~"ucha"] + [base~"do"] [orth~"ucha"]; +Eval: word(Adv, "od ucha do ucha"); + + +Rule "frazeo: odnośnie do" +Match: [base~"odnośnie"] [base~"do"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: oko w oko" + +Match: [orth~"[Oo]ko"] [base~"w"] [orth~"oko"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: twarzą w twarz" + +Match: ([orth~"[Tt]warzą"] | [orth~"[Tt]warz"]) [base~"w"] [orth~"twarz"]; +Eval: word(Adv, 1.orth " " 2.base " " 3.base); + + +Rule "frazeo: panie dzieju" + +Match: [orth~"[Pp]anie"] [orth~"dzieju"]; +Eval: word(Interj, "panie dzieju"); + + +Rule "DisG: panie dzieju" + +Match: [base~"panie dzieju"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: pędem" + +Match: [base~"pęd" && case~"inst" && number~"sg"]; +Right: $czasownik; +Eval: word(Adv, "pędem"); + + +Rule "frazeo: piąte przez dziesiąte" + +Match: [orth~"[Pp]iąte"] [base~"przez"] [orth~"dziesiąte"]; +Eval: word(Adv, "piąte przez dziesiąte"); + + +Rule "frazeo: Po co " + +Left: sb; +Match: [base~"po" && pos~~"prep"] [orth~"co|cóż"]; +Eval: word(Adv, 0.base); +##było też "na co", ale inne rzeczy się łapały + + +Rule "frazeo: , po co" + +Left: [base~","]; +Match: [base~"po" && pos~~"prep"] [orth~"co|cóż"]; +Eval: word(Adv, 0.base); +##było też "na co", ale inne rzeczy się łapały + + +Rule "frazeo: po drodze" + +Match: [base~"po" && pos~~"prep"] [orth~"drodze"]; +Right: [pos!~"adj"]; +Eval: word(Adv, 1.base " " 2.orth); +##tu można dokładniej: prawy kontekst to albo nie "szybkiego" albo nie przymiotnik w miejscowniku (jak to zapisać ! && !?) + + +Rule "frazeo: po herbacie|zawodach" + +Left: [base~"i"]; +Match: [base~"po" && pos~~"prep"] [orth~"herbacie|zawodach"]; +Eval: word(Adv, 2.base " " 3.orth); #LD zmiana cyferek + + +Rule "frazeo: po imieniu" + +Match: [base~"po"] [orth~"imieniu"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: po prostu" + +Match: [base~"po" && pos~~"prep"] [orth~"prostu"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: po trochu itp." + +Match: [base~"po" && pos~~"prep"] [orth~"trochu|trosze|troszeczku|troszku"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: po wiele/okroć" + +Match: [base~"po"] [base~"wielekroć|wielokroć"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: po -u" + +Match: [base~"po" && pos~~"prep"] [orth~".*u" && pos~~"adjp|burk"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: po pierwsze/drugie" + +Match: [base~"po" && pos~~"prep"] + [orth~"pierwsze|drugie|trzecie|czwarte" && pos~~"adj"]; +Eval: word(Qub, 1.base " " 2.orth); +#jaka to część mowy? było Adv, ale sądzę, że jednak Qub + + +Rule "frazeo: po próżnicy" + +Match: [base~"po" && pos~~"prep"] [orth~"próżnicy"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: po raz pierwszy itp." + +Match: [base~"po"] [orth~"raz"] [orth~"pierwszy|drugi|trzeci|czwarty"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: po raz [kolejny]" + +Match: [base~"po"] [orth~"raz"] [base~"adj" && case~"acc"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: po równo" + +Match: [base~"po"] [orth~"równo"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: po zęby" + +Match: [base~"po"] [orth~"zęby"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: pod adresem i in." + +Match: [base~"pod"] + [orth~"adresem|ciężarem|egidą|koniec|maską|okiem|osłoną|płaszczykiem|postacią|pozorem|pretekstem|warunkiem|wezwaniem|wodzą|wpływem|względem"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: pod auspicjami" + +Match: [base~"pod"] [orth~"auspicjami"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: pod kątem (Prep)" + +Match: [base~"pod"] [orth~"kątem"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: pod kątem (Adv)" + +Match: [base~"pod"] [orth~"kątem"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: pod ochroną" + +Match: [base~"pod"] [orth~"ochroną"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: podczas gdy" + +Match: [base~"podczas"] [base~"gdy"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: podobnie jak" + +Match: [base~"podobnie" && pos~"conj"] [base~"jak" && pos~"conj"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: poza tym" + +Match: [base~"poza" && pos~"prep"] [orth~"tym"]; +Right: [case!~"inst"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: powiedzmy" + +Left: [base~","]; +Match: [orth~"powiedzmy"]; +Right: [base~","]; +Eval: word(Qub, 2.orth); + + +Rule "DisG: powiedzmy" + +Match: [base~"powiedzmy"]; +Eval: group(DisG, 1,1); + + +#Rule "frazeo: prawda?" +# +#Match: [orth~"prawda" && pos~"subst"] ns [base~"?"]; +#Right: ns [base~"?"]; +#Eval: word(Interj, 1.base); +#!! reguła nie działa + + +Rule "frazeo: prędzej czy później" + +Match: [orth~"[Pp]rędzej"] [base~"czy"] [orth~"później"]; +Eval: word(Adv, "prędzej czy później"); + + +Rule "frazeo: wcześniej czy później" + +Match: [orth~"[Ww]cześniej"] [base~"czy"] [orth~"później"]; +Eval: word(Adv, "wcześniej czy później"); + + +Rule "frazeo: prosit" + +Match: [base~"prosit"]; +Eval: word(Interj, 1.base); + + +Rule "frazeo: przede wszystkim" + +Match: [orth~"[Pp]rzede"] [orth~"wszystkim"]; +Eval: word(Qub, "przede wszystkim"); + + +Rule "frazeo: przy okazji (Prep)" + +Match: [base~"przy"] [orth~"okazji"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: przy okazji (Adv)" + +Match: [base~"przy"] [orth~"okazji"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: przy pomocy" +Match: [base~"przy"] [orth~"pomocy"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: przy czym|tym (Conj)" + +Left: [base~","]; +Match: [base~"przy"] [orth~"czym|tym" && pos~"subst"]; +Eval: word(Conj, 2.base " " 3.orth); + + +Rule "frazeo: przy tym (Qub)" + +Match: [base~"przy"] [orth~"tym" && pos~"subst"]; +Right: [case!~"loc"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: przykładowo" + +Match: [orth~"[Pp]rzykładowo"]; +Eval: word(Qub, 1.base); + + +Rule "DisG: przykładowo" + +Match: [base~"przykładowo"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: razem z i in." + +Match: [base~"razem|łącznie|wespół|wraz"] [base~"z" && pos~~"prep"]; +Eval: word(2, Prep, 0.base); + + +Rule "frazeo: raz po raz" + +Match: [orth~"[Rr]az"] [base~"po"] [orth~"raz"]; +Eval: word(Adv, 0.base); + +Rule "frazeo: rodem z" + +Match: [orth~"[Rr]odem"] [base~"z" && pos~~"prep"]; +Eval: word(2, Prep, "rodem z"); + + +Rule "frazeo: rzecz jasna|oczywista" + +Match: [orth~"[Rr]zecz"] [orth~"jasna|oczywista"]; +Eval: word(Qub, "rzecz " 2.orth); +#w ISJP "rzecz jasna, że" to Interj, a u nas co? + + +Rule "DisG: rzecz jasna|oczywista" + +Match: ([base~"rzecz jasna"] | [base~"rzecz oczywista"]); +Eval: group(DisG, 1,1); + + +Rule "frazeo: sam w sobie" + +Match: [base~"sam"] [base~"w"] [orth~"sobie"]; +Eval: word(1, Adj, 1.base " " 2.base " " 3.orth); + + +Rule "frazeo: skoro świt" + +Match: [orth~"[Ss]koro"] [orth~"świt"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: słowo w słowo" + +Match: [orth~"[Ss]łowo"] [base~"w"] [orth~"słowo"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: status quo" + +Match: [base~"status"] [base~"quo"]; +Eval: word(1, Noun, 0.base); + + +Rule "frazeo: swego czasu" + +Match: [orth~"[Ss]wego"] [orth~"czasu"]; +Eval: word(Adv, "swego czasu"); + + +Rule "frazeo: swoją drogą" + +Match: [orth~"[Ss]woją"] [orth~"drogą"]; +Eval: word(Qub, "swoją drogą"); + + +Rule "DisG: swoją drogą" + +Match: [base~"swoją drogą"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: tak jakby" + +Left: [base~","]; +Match: [base~"tak"] [base~"jakby"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: tak naprawdę" + +Match: [base~"tak"] [orth~"naprawdę"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: tak zwany" + +Match: [base~"tak"] [base~"zwać" && pos~"ppas"]; +Eval: word(Adj:2.number:2.case:2.gender:pos, "tak zwany"); #LD zmiana +#Eval: word(2, Adj:pos, "tak zwany"); + + +#Rule "frazeo: to znaczy" +# +#Match: [orth~"[Tt]o"] [orth~"znaczy"]; +#Eval: word(Conj, "to znaczy"); +#!! lepiej zdefiniować + + +Rule "frazeo: tu i ówdzie" + +Match: [base~"tu"] [base~"i"] [base~"ówdzie"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: tym razem" + +Match: [orth~"[Tt]ym"] [orth~"razem"]; +Eval: word(Adv, "tym razem"); + + +Rule "frazeo: tym samym" + +Left: [pos!~"prep"]; +Match: [orth~"[Tt]ym"] [orth~"samym"]; +Eval: word(Qub, "tym samym"); + + +Rule "frazeo: tak samo" + +Match: [base~"tak"] [base~"samo"]; +Eval: word(Adv:pos, 0.base); + + +Rule "frazeo: taki sam" + +Match: [base~"taki"] [base~"sam"]; +Eval: unify(case number gender,1,2); + word(1, Adj, 0.base); + + +Rule "frazeo: ten sam" + +Match: [base~"ten"] [base~"sam"]; +Eval: unify(case number gender,1,2); + word(1, Adj, 0.base); + + +Rule "frazeo: to samo" + +Match: [base~"to"] [base~"sam"]; +Eval: unify(case number gender,1,2); + word(1, Noun, 1.base " samo"); + + +Rule "frazeo: tyle samo" + +Match: [base~"tyle"] [orth~"samo"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: tyle|tylko że" + +Match: [base~"tyle|tylko"] [base~"że"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: u boku i in." +Match: [base~"u"] [orth~"boku|góry|progu|schyłku|stóp"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: w biały dzień" + +Match: [base~"w"] [orth~"biały"] [orth~"dzień"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: w całej rozciągłości" + +Match: [base~"w"] [orth~"całej"] [orth~"rozciągłości"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w całości" + +Match: [base~"w"] [orth~"całości"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w dodatku" + +Match: [base~"w"] [orth~"dodatku"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w głos" + +Match: [base~"w"] [orth~"głos"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: w gruncie rzeczy" + +Match: [base~"w"] [orth~"gruncie"] [orth~"rzeczy"]; +Eval: word(Qub, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w istocie rzeczy" + +Match: [base~"w"] [orth~"istocie"] [orth~"rzeczy"]; +Eval: word(Qub, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w istocie" + +Match: [base~"w"] [orth~"istocie"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w każdym razie" + +Match: [base~"w"] [orth~"każdym"] [orth~"razie"]; +Eval: word(Qub, 1.base " " 2.orth " " 3.orth); + + +Rule "DisG: w każdym razie" + +Match: [base~"w każdym razie"]; +Eval: group(DisG, 1,1); + + +Rule "frazeo: w kucki" + +Match: [base~"w"] [orth~"kucki"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w myślach|myśli" + +Match: [base~"w"] [orth~"myślach|myśli"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w najlepsze (1)" + +Match: [base~"w"] [orth~"najlepsze"]; +Right: [case!~"acc"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w najlepsze (2)" + +Match: [base~"w"] [orth~"najlepsze"]; +Right: ns [pos~"interp"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w oddali" + +Match: [base~"w"] [base~"oddali"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: w ostatniej chwili" + +Match: [base~"w"] [orth~"ostatniej"] [orth~"chwili"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w razie czego" + +Match: [base~"w"] [orth~"razie"] [orth~"czego"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w samą porę" + +Match: [base~"w"] [orth~"samą"] [orth~"porę"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w zaparte" + +Match: [base~"w"] [orth~"zaparte"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w zasadzie" + +Match: [base~"w"] [orth~"zasadzie"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w zgodzie z" + +Match: [base~"w"] [orth~"zgodzie"] [base~"z" && pos~~"prep"]; +Eval: word(3, Prep, "w zgodzie z"); + + +Rule "frazeo: w zupełności|pełni" + +Match: [base~"w"] [orth~"zupełności|pełni"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w celu i in." + +Match: [base~"w" && pos~~"prep"] + [orth~"celu|charakterze|ciągu|czasie|dole|drodze|duchu|dziedzinie|imieniu|imię|miejsce|myśl|następstwie|obliczu|obrębie|obronie|pobliże|postaci|przeciągu|przeddzień|przededniu|przypadku|ramach|razie|rodzaju|roli|sferze|skali|sprawie|stronę|środku|świetle|toku|trakcie|wydaniu|wyniku|wypadku|wysokości|zakresie|zastępstwie"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: w efekcie i in. (Prep)" + +Match: [base~"w" && pos~~"prep"] + [orth~"efekcie|rezultacie|głąb|głębi|pobliżu|poprzek|końcu"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: w efekcie i in. (Adv)" + +Match: [base~"w" && pos~~"prep"] + [orth~"efekcie|rezultacie|głąb|głębi|pobliżu|poprzek"]; +Right: [case!~"gen"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w końcu (Qub)" + +Match: [base~"w" && pos~~"prep"] [orth~"końcu"]; +Right: [case!~"gen"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w lot" + +Match: [base~"w"] [orth~"lot"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: w miarę jak (Comp)" + +Match: [base~"w" && pos~~"prep"] [orth~"miarę"] [base~"jak"]; +Eval: word(Comp, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w miarę (Prep)" + +Match: [base~"w" && pos~~"prep"] [orth~"miarę"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: w miarę (Adv)" + +Match: [base~"w" && pos~~"prep"] [orth~"miarę"]; +Right: [pos~"adj|adv" && degree~"pos"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w odniesieniu do i in." + +Match: [base~"w" && pos~~"prep"] [orth~"nawiązaniu|odniesieniu|opozycji|przeciwieństwie|stosunku"] + [base~"do" && pos~~"prep"]; +Eval: word(Prep:gen, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w odpowiedzi na" + +Match: [base~"w" && pos~~"prep"] [orth~"odpowiedzi"] + [base~"na" && pos~~"prep"]; +Eval: word(Prep:acc, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w odróżnieniu|zależności od" + +Match: [base~"w" && pos~~"prep"] [orth~"odróżnieniu|zależności"] + [base~"od" && pos~~"prep"]; +Eval: word(Prep:gen, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w ogóle" + +Match: [base~"w"] [orth~"ogóle"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w ogólności" + +Match: [base~"w"] [orth~"ogólności"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w oparciu o" + +Match: [base~"w" && pos~~"prep"] [orth~"oparciu"] [base~"o" && pos~~"prep"]; +Eval: word(Prep:acc, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w pojedynkę" + +Match: [base~"w"] [orth~"pojedynkę"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w porozumieniu z" + +Match: [base~"w" && pos~~"prep"] [orth~"porozumieniu"] + [base~"z" && pos~~"prep"]; +Eval: word(3, Prep, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w porównaniu|związku z" + +Match: [base~"w" && pos~~"prep"] [orth~"porównaniu|związku"] + [base~"z" && pos~~"prep"]; +Eval: word(3, Prep, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: w porządku (Interj)" + +Left: sb; +Match: [base~"w" && pos~~"prep"] [orth~"porządku"]; +Right: [pos~"interp"]? se; +Eval: word(Interj, 2.base " " 3.orth); #LD zmiana cyferek + + +Rule "frazeo: w porządku (Adv)" + +Match: [base~"w" && pos~~"prep"] [orth~"porządku"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: wpół do" + +Match: [base~"wpół|pół"] [base~"do"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: w sumie" + +Match: [base~"w"] [orth~"sumie"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: w szczególności" + +Match: [base~"w"] [orth~"szczególności"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: w ślad za" + +Match: [base~"w" && pos~~"prep"] [orth~"ślad"] [base~"za" && pos~~"prep"]; +Eval: word(Prep:inst, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w zamian za" + +Match: [base~"w" && pos~~"prep"] [orth~"zamian"] [base~"za" && pos~~"prep"]; +Eval: word(Prep:acc, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: w zamian" + +Match: [base~"w"] [orth~"zamian"]; +Eval: word(Adv, 1.base " " 2.orth); + +Rule "frazeo: we wnętrzu" + +Match: [orth~"[Ww]e" && pos~~"prep"] [orth~"wnętrzu"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: wbrew pozorom" + +Match: [base~"wbrew"] [orth~"pozorom"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: wszystko jedno" + +Match: [orth~"[Ww]szystko"] [orth~"jedno"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z całą pewnością" + +Match: [base~"z"] [orth~"całą"] [orth~"pewnością"]; +Eval: word(Qub, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: z całych sił" + +Match: [base~"z"] [orth~"całych"] [orth~"sił"]; +Eval: word(Adv, "z " 2.orth " " 3.orth); + + +Rule "frazeo: ze wszystkich sił" + +Match: [base~"z"] [orth~"wszystkich"] [orth~"sił"]; +Eval: word(Adv, "ze " 2.orth " " 3.orth); + + +Rule "frazeo: z całej siły" + +Match: [base~"z"] [orth~"całej"] [orth~"siły"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: ile|co sił" + +Match: [orth~"ile|co"] [orth~"sił"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z ciężkim sercem" + +Match: [orth~"[Zz]"] [orth~"ciężkim"] [orth~"sercem"]; +Eval: word(Adv, "z " 2.orth " " 3.orth); + + +Rule "frazeo: z czasem (1)" + +Left: sb; +Match: [base~"z" && pos~~"prep"] [orth~"czasem"]; +Eval: word(Adv, 2.base " " 3.orth); + + +Rule "frazeo: z czasem (2)" + +Match: [base~"z" && pos~~"prep"] [orth~"czasem"]; +Right: [pos~"qub"]? $czasownik; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z dala|daleka od" + +Match: [base~"z" && pos~~"prep"] [orth~"dala|daleka"] [base~"od"]; +Eval: word(Prep:gen, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: daleko od" + +Match: [base~"daleko"] [base~"od"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: z bliska/daleka" + +Match: [base~"z" && pos~~"prep"] + [orth~"bliska|cicha|dala|daleka|lekka|lewa|nagła|naprzeciwka|niedaleka|oddali|osobna|ostrożna|przeciwka|rzadka|ukosa|wolna|wysoka"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z duszą na ramieniu" + +Match: [base~"z"] [orth~"duszą"] [base~"na"] [orth~"ramieniu"]; +Eval: word(Adv, "z duszą na ramieniu"); + + +Rule "frazeo: z głębi i in." + +Match: [base~"z" && pos~~"prep"] + [orth~"głębi|końcem|okazji|perspektywy|początkiem|pomocą|powodu|przyczyny|racji|ramienia|strony|tyłu|tytułu|wyjątkiem"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: z grubsza" + +Match: [base~"z" && pos~~"prep"] [orth~"grubsza"]; +Eval: word(Qub, 1.base " " 2.orth); + +Rule "frazeo: z gruntu" + +Match: [base~"z" && pos~~"prep"] [orth~"gruntu"]; +Eval: word(Adv, 1.base " " 2.orth); + +Rule "frazeo: z|po kolei" + +Match: [base~"z|po" && pos~~"prep"] [orth~"kolei"]; +Eval: word(Adv, 1.base " " 2.orth); + + +#LD Tę regułę trzeba na razie wyłączyć, bo produkuje niepełne tagi. +#brak informacji morfologicznych dla Adj +#Rule "frazeo: z krwi i kości" + +#Nie można wziąć informacji z elementu z kontekstu, więc reguły trzeba by rozmnożyć. Wtedy będzie 70 reguł (2 liczby, 7 przypadków, 5 rodzajów). +#Left: [pos~"subst" && number~"sg"]; +#Match: [base~"z"] [orth~"krwi"] [base~"i"] [orth~"kości"]; +#Eval: word(1, Adj, "z krwi i kości"); + + +Rule "frazeo: z łatwością|trudem" + +Match: [base~"z" && pos~~"prep"] [orth~"łatwością|trudem"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z pewnością" + +Match: [base~"z" && pos~~"prep"] [orth~"pewnością"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: z powrotem" + +Match: [base~"z"] [orth~"powrotem"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z pozoru" + +Match: [base~"z"] [orth~"pozoru"]; +Eval: word(Adv, 1.base " " 2.orth); + + +#LD Tę regułę trzeba na razie wyłączyć, bo produkuje niepełne tagi. +#brak informacji morfologicznych dla Adj +#Rule "frazeo: z prawdziwego zdarzenia" +# +#Match: [base~"z"] [orth~"prawdziwego"] [orth~"zdarzenia"]; +#Eval: word(Adj, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: z punktu widzenia" + +Match: [base~"z" && pos~~"prep"] [orth~"punktu"] [orth~"widzenia"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: z pyszna" + +Match: [base~"z" && pos~~"prep"] [orth~"pyszna"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z rana" + +Match: [base~"z" && pos~~"prep"] [orth~"samego"]? [orth~"rana"]; +Eval: word(Adv, 0.orth); + + +Rule "frazeo: ze smakiem" + +Left: [base~"jeść|zjeść"]; +Match: [base~"z"] [orth~"smakiem"]; +Eval: word(Adv, 2.base " " 3.orth); + + +Rule "frazeo: z zasady" + +Match: [base~"z"] [orth~"zasady|reguły"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: z zimną krwią" + +Match: [base~"z"] [orth~"zimną"] [orth~"krwią"]; +Eval: word(Adv, "z " 2.orth " " 3.orth); + + +Rule "frazeo: z -ska" + +Match: [base~"z" && pos~~"prep"] [orth~".*ska" && pos~~"adjp|burk"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z tym, że" + +Match: [base~"z"] [orth~"tym"] (ns [base~","])? [base~"że"]; +Eval: word(Conj, 1.base " " 2.orth 3.base " " 4.base); + + +Rule "frazeo: z uwagi na" + +Match: [base~"z"] [orth~"uwagi"] [base~"na"]; +Eval: word(Prep:acc, 1.base " " 2.orth " " 3.base); + + +Rule "frazeo: za darmo|bezcen" + +Match: [base~"za" && pos~~"prep"] [base~"darmo|bezcen"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: za to" + +Match: [base~"za" && pos~~"prep"] [orth~"to"]; +Right: [case!~"acc"]; +Eval: word(Qub, 1.base " " 2.orth); + + +Rule "frazeo: za cenę i in." + +Match: [base~"za" && pos~~"prep"] + [orth~"cenę|pomocą|pośrednictwem|sprawą"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.base " " 2.orth); + + +Rule "frazeo: ze względu na" + +Match: [orth~"[Zz]e"] [orth~"względu"] [base~"na"]; +Eval: word(Prep:acc, "ze względu na"); + + +Rule "frazeo: zależnie|niezależnie od" + +Match: [base~"zależnie|niezależnie" && pos~~"adv"] [base~"od" && pos~~"prep"]; +Eval: word(Prep:gen, 0.base); + + +Rule "frazeo: zgodnie|niezgodnie z" + +Match: [base~"zgodnie|niezgodnie" && pos~~"adv"] [base~"z" && pos~~"prep"]; +Eval: word(2, Prep, 0.base); + + +Rule "frazeo: zwłaszcza że" + +Match: [base~"zwłaszcza"] [base~"że|iż"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: bez/do reszty" + +Match: [base~"bez|do" && pos~~"prep"] [orth~"reszty"]; +Right: $lub_imieslow; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: z prawa" + +Match: [base~"z" && pos~~"prep"] [orth~"prawa"]; +Right: ([base!~"do" && pos~~"prep"] | [case!~"gen"]); +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: póki co" + +Match: [base~"póki" && pos~~"comp"] [orth~"co" && pos~~"subst"]; +Eval: word(Adv, 1.base " " 2.orth); + + +Rule "frazeo: co do + gen" + +Match: [orth~"[Cc]o" && pos~~"comp"] [base~"do" && pos~~"prep"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Prep:gen, 1.orth " " 2.base); + + +Rule "frazeo: mimo że/iż" + +Match: [base~"mimo|pomimo"] [base~"że|iż"]; +Eval: word(Comp, 0.base); + + +Rule "frazeo: a także" + +Match: [base~"a"] [base~"także"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: a więc (Conj)" + +Left: [base~","]; +Match: [base~"a"] [base~"więc"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: a więc (Qub)" + +Left: sb; +Match: [base~"a"] [base~"więc"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: a zatem (Conj)" + +Left: [base~","]; +Match: [base~"a"] [base~"zatem"]; +Eval: word(Conj, 0.base); + + +Rule "frazeo: a zatem (Qub)" + +Left: sb; +Match: [base~"a"] [base~"zatem"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: zarówno ... " + +Match: [base~"zarówno|tak" && pos~~"conj"]; +Right: []+ ns [base~","] + [base~"jak" && pos~~"conj"] [base~"i" && pos~~"conj"]; +Eval: word(Conj1:discr, 1.base); + + +Rule "frazeo: nie tylko ..." + +Match: [base~"nie" && pos~~"conj"] [base~"tylko" && pos~~"conj"]; +Right: []+ (ns [base~","] []+)? ns [base~","] + [base~"lecz|ale" && pos~~"conj"] [base~"i|także|również"]?; +Eval: word(Conj1:discr, "nie tylko"); + + +Rule "frazeo: im ... " + +Match: [base~"im" && pos~~"conj"]; +Right: []+ (ns [base~","] []+)? ns [base~","] + [base~"tym" && pos~~"conj"]; +Eval: word(Conj1:discr, 1.base); + + +Rule "frazeo: ani ... " + +Match: [base~"ani" && pos~~"conj"]; +Right: []+ ns [base~","] + [base~"ani" && pos~~"conj"]; +Eval: word(Conj1:discr, 1.base); + + +Rule "frazeo: albo ... " + +Match: [base~"albo" && pos~~"conj"]; +Right: []+ ns [base~","] + [base~"albo" && pos~~"conj"]; +Eval: word(Conj1:discr, 1.base); + + +Rule "frazeo: nie dość, że ... " + +Match: [base~"nie" && pos~"conj"] [base~"dość" && pos~"conj"] + ns [base~","] [base~"że"]; +Right: []+ ns [base~","] + [base~"to" && pos~~"conj"] [base~"jeszcze" && pos~~"conj"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: na tyle ... " + +Match: [base~"na"] [base~"tyle"]; +Right: []* ns [base~","] + [base~"na"] [base~"ile"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: na tyle (Adv)" + +Match: [base~"na"] [base~"tyle"]; +Right: [pos~"Adj"]; +Eval: word(Adv, 0.base); + + +Rule "frazeo: nie tyle ... " + +Match: [base~"nie"] [base~"tyle"]; +Right: []* ns [base~","] [base~"ile|co"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: tym bardziej że" + +Match: [orth~"[Tt]ym"] [orth~"bardziej"] [base~"że"]; +Eval: word(Comp, "tym bardziej że"); + + +Rule "frazeo: tym bardziej" + +Match: [orth~"[Tt]ym"] [orth~"bardziej"]; +Eval: word(Qub, "tym bardziej"); + + +Rule "frazeo: jeśli/jeżeli ... " + +Match: [base~"jeśli|jeżeli|skoro|gdyby" && pos~~"comp"]; +Right: []+ ns [base~","] [base~"to" && pos~~"conj"]; +Eval: word(Comp1:discr, 1.base); + + +Rule "frazeo: jak ... " + +Match: [base~"jak" && pos~~"adv"]; ##!czy to ma być adv? +Right: []+ ns [base~","] + [base~"to" && pos~~"conj"]; +Eval: word(Comp1:discr, 1.base); + + +Rule "frazeo: o tyle ... " + +Match: [base~"o"] [base~"tyle"]; +Right: []* ns [base~","] + [base~"o"] [base~"ile"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: o ile ... " + +Match: [base~"o"] [base~"ile"]; +Right: []* ns [base~","] + [base~"o"] [base~"tyle"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: dopóki ... " + +Match: [base~"dopóki" && pos~~"comp"]; +Right: []+ ns [base~","] + [base~"dopóty" && pos~~"conj"]; +Eval: word(Comp1:discr, 1.base); + + +Rule "frazeo: ..., jak i" + +Left: [base~"zarówno|tak" && pos~"Conj1"] []+; +Match: ns [base~","] + [base~"jak" && pos~~"conj"] [base~"i|też|również"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: jak również" + +Match: [base~"jak" && pos~~"|conj|adv"] [base~"również" && pos~"conj|qub"]; +Eval: word(Conj, 0.base); +#nie działa (plik morph-Inne2) + +Rule "frazeo: ..., ale|lecz i|także" + +Left: [base~"nie tylko" && pos~~"Conj1"] []+ (ns [base~","] []+)?; +Match: ns [base~","] + [base~"lecz|ale" && pos~~"conj"] [base~"i|także|również"]?; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ..., tym" + +Left: [base~"im" && pos~~"Conj1"] []+ (ns [base~","] []+)?; +Match: ns [base~","] [base~"tym" && pos~~"conj"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ..., ani" + +Left: [base~"ani" && pos~~"Conj1"] []+; +Match: ns [base~","] + [base~"ani" && pos~~"conj"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ..., albo" + +Left: [base~"albo" && pos~~"Conj1"] []+; +Match: ns [base~","] + [base~"albo" && pos~~"conj"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ..., to jeszcze " + +Left: [base~"nie dość, że" && pos~~"Conj1"] []+; +Match: ns [base~","] + [base~"to" && pos~~"conj"] [base~"jeszcze" && pos~~"conj"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ... na ile" + +Left: [base~"na tyle" && pos~~"Conj1"] []*; +Match: ns [base~","] [base~"na"] [base~"ile"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ... ile|co" + +Left: [base~"nie tyle" && pos~~"Conj1"] []*; +Match: ns [base~","] [base~"ile|co"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: (jeśli)..., to " + +Left: [base~"jeśli|jeżeli|skoro|gdyby" && pos~~"Comp1"] []+; +Match: ns [base~","][base~"to" && pos~~"conj"]; +Eval: word(Comp2:discr, 0.base); + + +Rule "frazeo: (jak) ..., to" + +Left: [base~"jak" && pos~~"Comp1"] []+; +Match: ns [base~","] [base~"to" && pos~~"conj"]; +Eval: word(Comp2:discr, 0.base); + + +Rule "frazeo: ... o ile" + +Left: [base~"o tyle" && pos~~"Conj1"] []*; +Match: ns [base~","] [base~"o"] [base~"ile"]; +Eval: word(Conj2:discr, 0.base); + + +Rule "frazeo: ... o tyle" + +Left: [base~"o ile" && pos~~"Conj1"] []*; +Match: ns [base~","] [base~"o"] [base~"tyle"]; +Eval: word(Conj1:discr, 0.base); + + +Rule "frazeo: ... dopóty" + +Left: [base~"dopóki" && pos~~"Comp1"] []+; +Match: ns [base~","] + [base~"dopóty" && pos~~"conj"]; +Eval: word(Comp2:discr, 0.base); + + +##$$ dwufunkcyjne +##do przesady +##do woli +#do dnia - wykluczyć subst, pact, adj z prawej (warto?) +#po pijaku +#na czele + +##JW bliższe frazeologizmom + +Rule "frazeo: tylko i wyłącznie" + +Match: [base~"tylko"] [base~"i"] [base~"wyłącznie"]; +Eval: word(Qub, 0.base); + + +Rule "frazeo: w dalszym ciągu" + +Match: [base~"w" && pos~~"prep"] [orth~"dalszym"] [orth~"ciągu"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + +Rule "frazeo: za wszelką cenę" + +Match: [base~"za" && pos~~"prep"] [orth~"wszelką"] [orth~"cenę"]; +Eval: word(Adv, 1.base " " 2.orth " " 3.orth); + + + +##reguły dla skrótów + + +Rule "Brev: %" + +Match: [base~"%" && pos~~"interp"]; +Right: []; +Eval: word(Brev:npun:NOUN, "procent"); + +Rule "Brev: §" + +Match: [base~"§" && pos~~"interp"]; +Right: []; +Eval: word(Brev:npun:NOUN, "paragraf"); + + +Rule "Brev: °" + +Match: [base~"°" && pos~~"interp"]; +Right: []; #ns [pos~"interp"]; #!Spejd protestuje +Eval: word(Brev:npun:NOUN, "stopień"); + + +Rule "Brev: ub.r. (osobno) (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "ubiegły rok"); +#czy to nie powinien być jeden segment? + + +Rule "Brev: ub.r. (osobno) (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, "ubiegły rok"); +#czy to nie powinien być jeden segment? + + +Rule "Brev: r. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: r. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: r. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: r. bez kropki" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rok"]; +Eval: word(Brev:pun:NOUN, 1.base); +##!! nie wiem, jak zapisać, że jako prawy kontekst nie może być "ns kropka" + +Rule "Brev: l. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"lata"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: l. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"lata"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: l. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"lata"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: w. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wiek"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: w. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wiek"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: w. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wiek"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + +Rule "Brev: w. (wyspa1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wyspa"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: w. (wyspa2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wyspa"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: w. (wyspa3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wyspa"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: godz. godz." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"godzina"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"godzina"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, "godziny"); + + +Rule "Brev: b.m. (osobno)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"miesiąc"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "bieżący miesiąc"); + + +Rule "Brev: godz.|sek.|dn.|mies. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"godzina|sekunda|dzień|miesiąc"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: godz.|sek.|mies. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"godzina|sekunda|miesiąc"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: godz.|sek. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"godzina|sekunda"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: godz. (4)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"godzina"] + ns [base~"\."]; +Right: ns [pos~"adj|num"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pon. i in." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"poniedziałek|wtorek|środa|czwartek|piątek|sobota|niedziela"] + ns [base~"\."]; #LD dodałam pozostałe dni tygodnia +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pt." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"piątek"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tys. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tysiąc"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tys. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tysiąc"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tys. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tysiąc"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: tys. (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tysiąc"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: l. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"liczba"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: proc.|prom. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"procent|promil"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: proc. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"procent"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: proc. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"procent"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: pkt. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"punkt"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pkt. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"punkt"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pkt. (2a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"punkt"] ns [base~"\."]; +Right: ns [orth~"[0-9]+"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pkt. (2b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"punkt"] ns [base~"\."]; +Right: ns [orth~"[0-9]+[0-9.]+"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pkt. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"punkt"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: pkt|ppkt" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"punkt|podpunkt"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: szt." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sztuka"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: poz.|wyd." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pozycja|wydanie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: poł.|pocz. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"połowa|początek"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: poł.|pocz. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"połowa|początek"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: poł.|pocz. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"połowa|początek"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: poł. (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"połowa"]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); +#!jak zaznaczyć, że tu nie może być "ns ."? + +Rule "Brev: fot. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"fotografia|fotograf|zdjęcie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: fot. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"fotografia"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: art.|h." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"artysta|homoseksualista"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: proj.|oprac." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"projekt|opracowanie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "NGb: Brev(N=oprac.|proj.)" + +Match: [base~"opracowanie|projekt" && pos~"Brev"]; +Right: [base~"[A-ZŁŚ].*" && case~"nom"]; +Eval: group(NGb,1,1); + + +Rule "Brev: lek. med." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"lekarz"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"medycyna"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "lekarz medycyny"); + + +Rule "Brev: lek." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"lekarz"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); +#jeszcze nie było + +Rule "Brev: mieszk. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"mieszkaniec"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: mieszk. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"mieszkaniec"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: mieszk. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"mieszkaniec"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: Dz.U. (razem)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dziennik.ustaw"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: Dz.U. (osobno)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dziennik"] + ns [base~"\."] ns? + [pos~~"brev" && fullstoppedness~~"pun" && base~~"ustawa"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "dziennik ustaw"); +#?czy na etapie segmentacji to nie powinien być jeden brev? + + +Rule "Brev: Społ.-Ekon." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"społeczno"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"ekonomiczny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, "społeczno-ekonomiczny"); +#?czy na etapie segmentacji to nie powinien być jeden brev? + +Rule "Brev: ust." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ustęp|ustawa"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ust. (4)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ustęp"] ns [base~"\."]; +Right: ns [pos~"adj|num"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: lit." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"litera"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: arch." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"archiwum"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dol. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dolar"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dol. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dolar"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dol. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dolar"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: fund." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"fundacja"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: Lic." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"liceum"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: kl." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"klasa"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: im." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"imienia"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: przyp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przypisek|przypis"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tel." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"telefon"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tel. (2*)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"telefon"] + ns [base~"\."]; +Right: ns []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tel (2) (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"telefon"]; +Right: ns [base~"/|:"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: s.|str.|ss.|t.|k.|rozdz." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"strona|strony|tom|karta|rozdział"] + ns [base~"\."]; +Right: ns? []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: str. bez kropki" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"strona"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pok.|m." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pokój|mieszkanie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: art. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"artykuł"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: art. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"artykuł"] + ns [base~"\."]; +Right: ns [base~"[1-9][0-9]*"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: par." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"paragraf"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: cyt." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"cytat"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ref. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"refren"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ref. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"refren"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: rys.|tab." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rysunek|ilustracja|tabela"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: rys. (4)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rysunek"] + ns [base~"\."]; +Right: ns [pos~"adj|num"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ryc. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rycina"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ryc. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rycina"] + ns [base~"\."]; +Right: ns [base~":"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: wkł. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wkładka"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: temp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"temperatura"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: sygn.|zn." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sygnatura|znak"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ms." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"manuscriptum"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: reż.|przebud." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"reżyseria|przebudowa|przyjazd"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: zm. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"zmiana"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: st." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"stopień"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: stow.|tow." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"stowarzyszenie|towarzystwo"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: al.|ul.|pl." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"aleja|ulica|plac"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ul.|pl. (4)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ulica|plac"] + ns [base~"\."]; +Right: ns []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: złożone strony świata (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"północny|południowy"] ns [base~"\."] + ns? [pos~~"brev" && fullstoppedness~~"pun" + && base~~"wschód|zachód"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base " " 5.base); + + +Rule "Brev: złożone strony świata (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"północny|południowy"] ns [base~"\."] + ns? [pos~~"brev" && fullstoppedness~~"pun" + && base~~"wschód|zachód"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base " " 5.base); + + +Rule "Brev: strony świata (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"wschód|zachód|północ|południe"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: strony świata (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"wschód|zachód|północ|południe"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: strony świata (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"wschód|zachód|północ|południe"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: p. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"piętro"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: p. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"piętro"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: j." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"język"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: kop." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kopalnia"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: Oddz.|Konst.|Dep." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"oddział|Konstytucja|departament"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: łac. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"łacina"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: śp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"świętej.pamięci"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: Sp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"spółka"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: o.o." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"ograniczona odpowiedzialność"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: S.C." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"spółka cywilna"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: Ś.P. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"świętej"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"pamięci"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: Ś.P. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"świętej"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"pamięci"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: mkw. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"metr.kwadratowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: mkw. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"metr.kwadratowy"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: m kw. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"metr"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"kwadratowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: m kw. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"metr"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"kwadratowy"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: m kw. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"metr"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"kwadratowy"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: cdn./c.d.n. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ciąg.dalszy.nastąpi"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: Cd. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ciąg.dalszy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); +#zmienić na DisG? + + +Rule "Brev: cd. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ciąg.dalszy"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: agd. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && + base~~"artykuły gospodarstwa domowego"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); +#? dlaczego pun? + +Rule "Brev: e.w." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ekwiwalent wodny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: A.D." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Anno.Domini"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: M.P." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"military police"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: Ltd. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"limited.company"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: T.S.S." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Turbine"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"Steam"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"Ship"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "Turbine Steam Ship"); + + +Rule "Brev: S.T., N.T. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"Stary Testament|Nowy Testament"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: S.T., N.T. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"Stary Testament|Nowy Testament"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: Mk|Mt|Łk|J" + +Match: [pos~~"brev" && fullstoppedness~~"npun" + && base~~"Ewangelia według świętego Marka|Ewangelia według świętego Mateusza|Ewangelia według świętego Łukasza|Ewangelia według świętego Jana"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: Mk|Mt|Łk|J (wg św.)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" + && base~~"Ewangelia wg św. Marka|Ewangelia wg św. Mateusza|Ewangelia wg św. Łukasza|Ewangelia wg św. Jana"]; +Eval: word(Brev:npun:NG, 1.base); +#jak powinno być: "według świętego" czy "wg św."? + + +Rule "Brev: Kol|Kr|Dz" + +Match: [pos~~"brev" && fullstoppedness~~"npun" + && base~~"List do Kolosan|List do Koryntian|Dzieje Apostolskie|List do Efezjan"]; +Eval: word(Brev:npun:NG, 1.base); +#dopisać wszystkie listy + + +Rule "Brev: Biblia - Księgi" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Księga.Joela|Księga.Samuela|Księga.Izajasza|Księga.Wyjścia|Księga Powtórzonego Prawa|Księga.Jonasza|Księga.Mądrości|Księga.Ezechiela"]; +Eval: word(Brev:npun:NG, 1.base); +#dopisać wszystkie księgi + + +Rule "Brev: ĆD" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Ćwiczenia Duchowe"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: MB" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Matka Boska"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: Ś-W" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Ściana Wschodnia"]; +Right: []; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: k." + +Left: [base~"żółty"] ns; +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kartka"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 3.base);#LD zmiana cyferki + + +Rule "Brev: P. (Porrhomma)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Porrhomma"] + ns [base~"\."]; +Right: [base~"moravicum"]; +Eval: word(Brev:pun:XXX, 1.base); + + +Rule "Brev: K.W." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Krzyż"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"Walecznych"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, "Krzyż Walecznych"); + + +Rule "Brev: INF. WŁ." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"informacja"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"własny|własna"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, "informacja własna"); + + +Rule "Brev: woj. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"województwo"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: woj. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"województwo"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: woj. (2*)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"województwo|powiat"] + ns [base~"\."]; +Right: ns []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: jez.|rz.|dol.|Przeł." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"[Jj]ezioro|rzeka|dolina|[Pp]rzełęcz"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: rez." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"rezerwat|rzeka"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: m.st." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"miasto"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"stołeczny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "miasto stołeczne"); + + +Rule "Brev: pow.|gm.|m.|os." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"powiat|gmina|miasto|osiedle"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: m. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"miasto"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: m. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"miasto"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: ok." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"okolica"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: red.(1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"redaktor|redakcja"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: red. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"redaktor|redakcja"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: prof.|doc." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"profesor|docent"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: inż." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"inżynier"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: arch." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"architekt"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dyr." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dyrektor|dyrekcja"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: min." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"minister|ministerstwo"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: mec." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"mecenas"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: zast." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"zastępca"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: gen. gen." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"generał"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"generał"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, "generałowie"); + + +Rule "Brev: gen. bryg." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"generał"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"brygada"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "generał brygady"); + + +Rule "Brev: gen. dyw." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"generał"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"dywizja"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "generał dywizji"); + + +Rule "Brev: gen.|kpt.|por.|ppor." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"generał|kapitan|porucznik|podporucznik"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: st. szer." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"starszy"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"szeregowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "starszy szeregowy"); + + +Rule "Brev: st. post." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"starszy"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"posterunkowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "starszy posterunkowy"); + + +Rule "Brev: st. asp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"starszy"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"aspirant"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "starszy aspirant"); + + +Rule "Noun: st. sierżant" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"starszy"] + ns [base~"\."] + [pos~~"subst" && base~~"sierżant"]; +Eval: word(4, Noun, "starszy sierżant"); +##!! uznałam za Noun, bo centrum grupy nie jest skrótem + + +Rule "Brev: mł. insp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"młodszy"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"inspektor"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "młodszy inspektor"); + + +Rule "Brev: młodszy insp." + +Match: [pos~~"adj" && orth~~"[Mm]łodszy"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"inspektor"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "młodszy inspektor"); + + +Rule "Brev: insp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"inspektor"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: szer.|kom." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"szeregowy|komendant"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: tow.|kol." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"towarzysz|towarzyszka|kolega"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: hm.|dh." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"harcmistrz|druh"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: p.|pp." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pan|pani|państwo|panowie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: p. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pan|pani|państwo"] + ns [base~"\."]; +Right: ns []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ks.|o.|s." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ksiądz|ojciec|siostra"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ss. (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"siostra"]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ks.|hr." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"książę|hrabia"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: OO." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ojcowie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: ps." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pseudonim"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: pos." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"poseł"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: kom.|nadkom.|podkom." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"komisarz|nadkomisarz|podkomisarz"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: jr. (pun)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"junior"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: jr (npun)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"junior"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: dyw.|p." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dywizja|pułk"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: p. (2*)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pułk"] + ns [base~"\."]; +Right: ns; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: uł. 3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ułan"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: kat. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kategoria"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: pow.|obw.|odl.|poj." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"powierzchnia|obwód|odległość|pojemność"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: głęb.|dł.|szer.|wys." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"głębokość|długość|szerokość|wysokość"] + ns [base~"\."]; +Right: ns? []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: k.p.c. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"kodeks postępowania cywilnego"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: k.p.c. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"kodeks postępowania cywilnego"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: k.w. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kodeks wykroczeń"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: odp. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"odpowiedzialność"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: k.k." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kodeks"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"karny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "kodeks karny"); +#?czy na etapie segmentacji to nie powinien być jeden brev? + + +Rule "Brev: k.p." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kodeks"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"praca"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "kodeks pracy"); +#?czy na etapie segmentacji to nie powinien być jeden brev? + + +Rule "Brev: Zw. Zaw." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"związek"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"zawodowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "związek zawodowy"); + + +Rule "Brev: pap." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"papier"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: wielka litera z kropką przed skrótem" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"[A-ZŁŚŻĆŹ]"] ns [base~"\."]; +Right: ns [pos~"brev"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: wielka litera z kropką + segment" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"A|B|C|Ć|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|Q|R|S|Ś|T|U|V|W|Z|Ź|Ż"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Br." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Br"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Ch. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Ch"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Ch. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Ch"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + +Rule "Brev: litera Cz. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Cz"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Cz. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Cz"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + +Rule "Brev: litera St. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"St"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera St. (1a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Stanisław"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Sz. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Sz"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Sz. (2a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Sz"] ns [base~"\."]; +Right: ns [pos~"brev"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Sz. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Sz"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: litera Th." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Th"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Wł. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Wł"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: wielka litera z kropką + znak interpunkcyjny" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"A|B|C|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|Q|R|S|Ś|T|U|W|Z|Ż"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Ch. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Ch"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: litera Sz. (2)" +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Sz"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: wielka litera (base z kropką) (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"A\.|B\.|C\.|D\.|E\.|F\.|G\.|H\.|I\.|J\.|K\.|L\.|Ł\.|M\.|N\.|O\.|P\.|Q\.|R\.|S\.|Ś\.|T\.|U\.|W\.|Z\.|Ż\."] ns [base~"\."]; +Right: ns []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: wielka litera (base z kropką) (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"A\.|B\.|C\.|D\.|E\.|F\.|G\.|H\.|I\.|J\.|K\.|L\.|Ł\.|M\.|N\.|O\.|P\.|Q\.|R\.|S\.|Ś\.|T\.|U\.|W\.|Z\.|Ż\."] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + +Rule "Brev: wielka litera z kropką na końcu zdania" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"A|B|C|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|Q|R|S|Ś|T|U|W|Z|Ż"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + +Rule "Brev: wielka litera bez kropki" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"A|B|C|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|R|S|Ś|T|U|W|Z"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: wielka litera i dwukropek" + +Match: [pos~~"brev" && fullstoppedness~~"pun|npun" && base~~"A|B|C|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|R|S|Ś|T|U|W|Z"]; +Right: ns [base~":"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: wielka litera z kropką" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"A|B|C|D|E|F|G|H|I|J|K|L|Ł|M|N|O|P|R|S|Ś|T|U|W|Z"] ns [base~"\."]; +Right: (ns | []); +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: duże litery:" + +Match: [pos~~"brev" && fullstoppedness~~"pun|npun" && base~~"[A-ZŁŚŻ][A-ZŁŚŻ]+"]; +Right: ns [base~":"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: duże litery :" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"[A-ZŁŚŻ][A-ZŁŚŻ][a-z]?"]; +Right: [base~":"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: duże litery na końcu zdania" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"[A-ZŁŚŻ][A-ZŁŚŻ]"]; +Right: se; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: mała litera z kropką jako inicjał" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"a|b|c|cz|d|e|f|g|h|i|j|k|l|ł|m|n|o|p|r|s|ś|t|u|w|z"] ns [base~"\."]; +Right: (ns | []); +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: mała litera z kropką jako inicjał" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"a|b|c|cz|d|e|f|g|h|i|j|k|l|ł|m|n|o|p|r|s|ś|t|u|w|z"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: skrócone imię (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"Andrzej|Zenon|Małgorzata|Tadeusz|Grażyna|Krystyna"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: skrócone imię (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"Andrzej|Zenon|Małgorzata|Tadeusz|Grażyna|Krystyna"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: S.=sen? (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sen"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: S.=sen? (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sen"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NOUN, 1.base); + + +Rule "Brev: Wlkp|Op.|GD. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Wielkopolski|Gdański"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: Wlkp (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"Wielkopolski|Gdański"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: Wlkp|Op.|GD. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"Wielkopolski|Opolskie|Gdański"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); +#!czy nie powinno być Opolski? (NKJP_1M_1305000001942) + + +Rule "Brev: Płd (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"południowy|północny|wschodni|zachodni"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: Płd (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"południowy|północny|wschodni|zachodni"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: Płd (2*)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"północny"] + ns [base~"\."]; +Right: ns; +Eval: word(Brev:pun:ADJ, 1.base); +#reguła do usunięcia + +Rule "Brev: Płd (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"południowy|północny|wschodni|zachodni"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); + + +Rule "Brev: W. (adj)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wielki|Wielki"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: św. św." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"święty"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"święty"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, "święci"); + + +Rule "Brev: św.|St.|Najśw. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"święty|saint|najświętszy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: St" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Saint"]; +Eval: word(Brev:npun:ADJ, 1.base); + + +Rule "Brev: św. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"święty"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: św. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"święty"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); + + +Rule "Brev: paraf.|gm. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"parafialny|gminny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: paraf. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"parafialny"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + +Rule "Brev: m.in. (!)" ##czy to nie jest byk? + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"między"] + ns [base~"\."] ns? + [pos~~"brev" && fullstoppedness~~"pun" && base~~"inny|innymi"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:DisG, "między innymi"); + + +Rule "Brev: m.in. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"między.innymi"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: m.in. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"między.innymi"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "DisG: między innymi" + +Match: [base~"między.innymi"]; +Eval: group(DisG, 1,1); + + +Rule "Brev: in.(1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"inny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: in.(2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"inny"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: in.(3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"inny"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); + + +Rule "Brev: b.|d.|st.|późn.|zm.|zam.|śr.|dysk.|pojed." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"były|dawny|stary|późniejszy|zmarły|zamieszkały|średni|dyskusyjny|pojedynczy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: b.|d.|st.|późn.|zm.|zam.|śr.|dysk.|pojed. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"były|dawny|stary|późniejszy|zmarły|zamieszkały|średni|dyskusyjny|pojedynczy"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: d. ns k.p.c." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dawny"] + ns [base~"\."]; +Right: ns [pos~"brev"]; +Eval: word(Brev:pun:ADJ, 1.base); +#reguła szczegółowa + + +Rule "Brev: kw" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kwadratowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: ang. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"angielski"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: ang. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"angielski"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: łac.|wł.|pol." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"łaciński|włoski|polski"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: min.|maks." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"minimalny|maksymalny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: geogr." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"geograficzny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: kolej." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kolejowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: ppanc." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przeciwpancerny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: ppanc. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przeciwpancerny"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); + + +Rule "Brev: ppanc (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przeciwpancerny"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: (50-)proc." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"[1-9][0-9]*-procentowy|procentowy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); +#rozszerzyć regułę + + +Rule "Brev: n-tys." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"[1-9][0-9]*-tysięczny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + +Rule "Brev: c.k." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"cesarsko-królewski"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: ż." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"żółty"] + ns [base~"\."]; +Right: ns [base~"kartka"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: m sześć. (osobno) (2)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"metr"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"sześcienny"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, "metr sześcienny"); + + +Rule "Brev: sześć. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sześcienny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: sześć. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sześcienny"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: sześć. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"sześcienny"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:ADJ, 1.base); + + +Rule "Brev: ur.|zbud.|odbud.|rozbud.|przebud.|założ.|położ. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"urodzony|zbudowany|odbudowany|rozbudowany|przebudowany|założony|położony"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PPAS, 1.base); + + +Rule "Brev: ur.|zbud.|odbud.|rozbud.|przebud.|założ.|położ. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"urodzony|zbudowany|odbudowany|rozbudowany|przebudowany|założony|położony"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:PPAS, 1.base); + + +Rule "Brev: ur.|zbud.|odbud.|rozbud.|przebud.|założ.|położ. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"urodzony|zbudowany|odbudowany|rozbudowany|przebudowany|założony|położony"] ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:PPAS, 1.base); + + +Rule "Brev: dot." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"dotyczący"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PACT, 1.base); + + +Rule "Brev: w.w." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wyżej wymieniony"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:AdjG, 1.base); + + +Rule "Brev: ww (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wyżej wymieniony"]; +Right: []; +Eval: word(Brev:pun:AdjG, 1.base); + + +Rule "Brev: w/w (npun)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" + && orth~"w/w" && base~~"wyżej wymieniony"]; +Right: []; +Eval: word(Brev:npun:AdjG, 1.base); + + +Rule "Brev: b.|ew." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bardzo|ewentualnie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADV, 1.base); + + +Rule "Brev: jw (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"jak.wyżej"]; +Right: []; +Eval: word(Brev:pun:ADV, 1.base); +#nie wiem, jaką część mowy dać (na razie ADV) + + +Rule "Brev: ok." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"około"] + ns [base~"\."]; +Right: ns? []; +Eval: word(Brev:pun:QUB, 1.base); +##Ale może być prep! + + +Rule "Brev: np. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.przykład"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:QUB, 1.base); + + +Rule "Brev: np. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.przykład"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:QUB, 1.base); + + +Rule "Brev: np. (2*)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.przykład"] + ns [base~"\."]; +Right: ns; +Eval: word(Brev:pun:QUB, 1.base); +##reguła do usunięcia + +Rule "Brev: np: (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.przykład"]; +Right: ns [base~":"]; +Eval: word(Brev:pun:QUB, 1.base); + + +Rule "Brev: np (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.przykład"]; +Right: []; +Eval: word(Brev:pun:QUB, 1.base); + + +Rule "Brev: nb." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"nota.bene"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:QUB, 1.base); +##!!! spr. czy to Qub + + +Rule "Brev: k." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"koło"] + ns [base~"\."]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Brev:pun:PREP, 1.base); + + +Rule "Brev: m." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"między"] + ns [base~"\."]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"inst"]; +Eval: word(Brev:pun:PREP, 1.base); + + +Rule "Brev: pow." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"powyżej"] + ns [base~"\."]; +Eval: word(Brev:pun:PREP, 1.base); + + +Rule "Brev: n" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"nad"]; +Eval: word(Brev:npun:PREP, 1.base); + + +Rule "Brev: por.|zob.|p." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"porównaj|zobacz|patrz"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:VERB, 1.base); + + +Rule "Brev: zob.:" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"zobacz"] + ns [base~"\."]; +Right: ns [base~":"]; +Eval: word(Brev:pun:VERB, 1.base); + + +Rule "Brev: wyst.|zm.|proj." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"występują|zmarł|projektował"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:VERB, 1.base); + + +Rule "Brev: br. (1a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.rok"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: br. (1b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżącego.roku"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: br. (2a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.rok"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: br. (3a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.rok"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: br. (3b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżącego.roku"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: ub.r. (1a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły.rok"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: ub.r. (2a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły.rok"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: ub.r. (3a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły.rok"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: ub.r. (1b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegłego.roku"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "ubiegły rok"); + + +Rule "Brev: ub.r. (2b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegłego.roku"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, "ubiegły rok"); + + +Rule "Brev: ub." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"ubiegły"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: bm. (1a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżącego.miesiąca"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, "bieżący miesiąc"); + + +Rule "Brev: bm. (1b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.miesiąc"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: bm. (2a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżącego.miesiąca"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, "bieżący miesiąc"); + + +Rule "Brev: bm. (2b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.miesiąc"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: bm. (3a)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżącego.miesiąca"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, "bieżący miesiąc"); + + +Rule "Brev: bm. (3b)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"bieżący.miesiąc"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: c.o." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"centralne.ogrzewanie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: w.c. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"water.closet"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: w.c. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"water.closet"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: w.c. (2A)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wartości.chrześcijańskie"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: S.A. (osobno)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"spółka"] + ns [base~"\."] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"akcyjny"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, "spółka akcyjna"); +#?czy na etapie segmentacji to nie powinien być jeden brev? + +Rule "Brev: S.A. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"spółka.akcyjna"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: S.A. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"spółka.akcyjna"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: pt. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.tytułem"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: pt. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.tytułem"] + ns [base~"\."]; +Right: ns [base~":"]; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: pt. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.tytułem"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:PrepNG, 1.base); + + +Rule "Brev: pt. bez kropki" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.tytułem"]; +Right: [base~"\""]; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: pn." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.nazwą"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: nt." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"na.temat"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: pw." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"pod.wezwaniem"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: ds." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"do.spraw"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: d/s" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"do.spraw"]; +Eval: word(Brev:npun:PrepNG, 1.base); + + +Rule "Brev: w/m" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"w.miejscu"]; +Eval: word(Brev:npun:PrepNG, 1.base); + + +Rule "Brev: n.p.m. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"nad.poziomem.morza"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: n.p.m. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"nad.poziomem.morza"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: n.p.m. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"nad.poziomem.morza"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:PrepNG, 1.base); + + +Rule "Brev: p.n.e. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przed.naszą.erą"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: p.n.e. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przed.naszą.erą"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: p.n.e. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przed.naszą.erą"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:PrepNG, 1.base); + + +Rule "Brev: pne (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"przed.naszą.erą"]; +Eval: word(Brev:pun:PrepNG, 1.base); + + +Rule "Brev: n.e. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"naszej.ery"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: n.e. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"naszej.ery"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: n.e. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"naszej.ery"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:NG, 1.base); + + +Rule "Brev: itd. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tak.dalej"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: itd. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tak.dalej"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: itd. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tak.dalej"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: itd. (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tak.dalej"]; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: itp. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tym.podobne"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: itp. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tym.podobne"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: itp. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tym.podobne"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: itp bez kropki" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"i.tym.podobne"]; +Eval: word(Brev:pun:DisG, 1.base); +##!!tu powinno być wyraźnie, że nie może wystąpić kropka, ale jak zapisać + +Rule "Brev: etc. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"et.cetera"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:DisG, 1.base); + + +Rule "Brev: etc. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"et.cetera"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: etc. (3)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"et.cetera"] + ns [base~"\."]; +Right: se; +Eval: word(Brev-se:pun:DisG, 1.base); + + +Rule "Brev: tzn. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"to.znaczy"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:CONJ, 1.base); + + +Rule "Brev: tzn. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"to.znaczy"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:CONJ, 1.base); + + +Rule "Brev: tj. (1)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"to.jest"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:CONJ, 1.base); + + +Rule "Brev: tj. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"to.jest"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:CONJ, 1.base); + + +Rule "Brev: wzgl." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"względnie"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:CONJ, 1.base); +##spr. część mowy + +Rule "Brev: tzw." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tak zwany"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: tzw. (bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"tak zwany"]; +Eval: word(Brev:pun:ADJ, 1.base); + + +Rule "Brev: el.-magn." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"elektro"] + ns [base~"\."] + ns [base~"-"] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"magnetyczny"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:ADJ, "elektro-magnetyczny"); + + +Rule "Brev: zł" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"złoty"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: gr" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"grosz"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: mln" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"milion"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: mld" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"miliard"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: bln" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"bilion"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: cm (1)" +Match: [pos~~"brev" && fullstoppedness~~"npun" + && base~~"nanometr|mikrometr|milimetr|centymetr|metr|kilometr"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: cm (2)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" + && base~~"nanometr|milimetr|centymetr|metr|kilometr"]; +Right: ns [base~"\."] se; +Eval: word(Brev:npun:NOUN, 1.base); +##?? to "se" ma być? + +Rule "Brev: m2|km2" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~".*metr.kwadratowy"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: m3|dm3|ccm" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~".*metr.sześcienny"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: ml|l" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"mililitr|litr"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: q" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"kwintal"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: h|d" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"godzina|doba"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: min" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"minuta"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: st" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"stopa"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: H|h" +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"wysokość|głębokość"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: nr" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"numer"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: nr." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"numer"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: nr (bez kropki-błąd)" + +Left: [pos~"prep"]; +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"numer"]; +Eval: word(Brev:pun:NOUN, 2.base); + + +Rule "Brev: mg|g|dg|kg|pg" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"miligram|gram|dekagram|kilogram|pikogram"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: t" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"tona"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: ha" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"hektar"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: pc" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"parsek"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: płk|ppłk|mjr|rtm|kmdr" + +Match: [pos~~"brev" && fullstoppedness~~"npun|pun" + && base~~"pułkownik|podpułkownik|major|rotmistrz|komandor"]; +Eval: word(Brev:npun:NOUN, 1.base); + +##AW: zrobiłam osobną regułę, bo skrót rtm. powinien być z kropką +Rule "Brev: rtm." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"rotmistrz"] + ns [base~"\."]; +Eval: word(Brev:npun:NOUN, 1.base); + +Rule "Brev: bp/abp" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"biskup|arcybiskup"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: bp.|kard." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && base~~"biskup|arcybiskup|kardynał"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dr hab." + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"doktor"] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"habilitowany"] + ns [base~"\."]; +Eval: word(Brev:pun:NG, "doktor habilitowany"); + + +Rule "Brev: dr. hab." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"doktor"] + ns [base~"\."] + [pos~~"brev" && fullstoppedness~~"pun" && base~~"habilitowany"] + ns [base~"\."]; +Eval: word(Brev:pun:NG, "doktor habilitowany"); + + +Rule "Brev: dr|mgr" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"doktor|magister"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: dr." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"doktor"] + ns [base~"\."]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: dr (pun - bez kropki)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"doktor"]; +Right: [base~"[A-ZŁ].*" && case~"gen|dat|inst|loc"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: z-ca" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"zastępca"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: wf" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"wychowanie.fizyczne"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: wf" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && + base~~"wychowanie.fizyczne"] ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NG, 1.base); + + +Rule "Brev: S-ka" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"spółka"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: Mr" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"mister"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: Mb/s" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"megabajt"] + ns [base~"/"] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"sekunda"]; +Eval: word(Brev:npun:NG, "megabajt na sekundę"); + + +Rule "Brev: M/s" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"motor.ship"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: MB|kB" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"megabajt|kilobajt"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: V|kV|MW|kWh|GJ" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"wolt|kilowolt|megawat|kilowatogodzina|gigadżul"]; +Eval: word(Brev:npun:NOUN, 1.base); +#uzupełnić o inne możliwe + + +Rule "Brev: Gs|T|mT|0e" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"gaus|tesla|militesla|ersted"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: Al" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"aluminium"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: IgE" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Immunoglobina E"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: St|Sc" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"[Ss]tratus|[Ss]tratocumulus"]; +Eval: word(Brev:npun:NOUN, 1.base); +##! jest dużą i małą literą - jak powinno być? + + +Rule "Brev: MHz|GHz" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"megaherc|gigaherc"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: KM" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"koń.mechaniczny"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: SA" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"spółka.akcyjna"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: PS|PS." + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"postscriptum"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: P.S." + +Match: [pos~~"brev" && fullstoppedness~~"pun" + && orth~~"[Pp]\.[Ss]|PS" && base~~"post scriptum"] + ns [base~"\."]; +Eval: word(Brev:pun:NOUN, 1.base); +#było base postscriptum, jest post scriptum, zmienić brev_pos? + + +Rule "Brev: X" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"październik"]; +Eval: word(Brev:npun:NOUN, 1.base); +#uzupełnić inne miesiące + + +Rule "Brev: UK|BTW|EOT" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"UK|south|by the way|end of topic|in my humble opinion|Action Script"]; +Eval: word(Brev:npun:XXX, 1.base); + + +Rule "DisG: BTW" + +Match: [base~"by the way"]; +Eval: group(DisG, 1,1); + + +Rule "Brev: Ctrl" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Control"]; +Eval: word(Brev:npun:XXX, 1.base); + + +Rule "Brev: Wny" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"wielmożny"]; +Eval: word(Brev:npun:ADJ, 1.base); + + +Rule "Brev: Wn" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"winien"]; +Eval: word(Brev:npun:VERB, 1.base); + + +Rule "Brev: wielka litera w cudzysłowie" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"pun" && base~~"B|S"] + ns [orth~"\""]; +Right: []; +Eval: word(Brev:pun:NOUN, 3.base); + + +Rule "Brev: T[rybuna]" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"trybuna"] + ns [orth~"\""]; +Eval: word(Brev:npun:NOUN, 3.base); + + +Rule "Brev: Rz[eczpospolita]" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"Rzeczpospolita"] + ns [orth~"\""]; +Eval: word(Brev:npun:NOUN, 3.base); + + +Rule "Brev: Dz[iennik]" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"dziennik"] + ns [orth~"\""]; +Eval: word(Brev:npun:NOUN, 3.base); + + +Rule "Brev: S[olidarność] (1)" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"[Ss]olidarność"] + ns [orth~"\""]; +Right: []; +Eval: word(Brev:npun:NOUN, 3.base); + + +Rule "Brev: S[olidarność] (2)" + +Match: [orth~"\""] ns + [pos~~"brev" && fullstoppedness~~"npun" && base~~"[Ss]olidarność"] + ns [orth~"\""]; +Right: ns [pos~"interp"]; +Eval: word(Brev:npun:NOUN, 3.base); + + +Rule "Brev: RM" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Radio.Maryja"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: TL" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Trybuna.Ludu"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: ST" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Stary.Testament"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: KK|DCIoS" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Kościół.Katolicki|Dominikańskie Centrum Informacji o Sektach"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: K." + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"kościół"] + ns [base~"\."]; +Right: []; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: W. (2)" + +Match: [pos~~"brev" && fullstoppedness~~"pun" && base~~"wszechświat"] + ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(Brev:pun:NOUN, 1.base); + + +Rule "Brev: NTG" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"nie ta grupa"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: TM" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"trade.mark"]; +Eval: word(Brev:npun:NG, 1.base); +#NG czy XXX? + + +Rule "Brev: m[agnitudo] (2)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"magnitudo"]; +Right: ns [pos~"interp"]; +Eval: word(Brev:npun:XXX, 1.base); + + +Rule "Brev: °C" + +Match: [base~"°" && pos~"interp"] ns? + [pos~~"brev" && base~~"Celsjusza|Celsjusz"]; +Eval: word(Brev:npun:NG, "stopień Celsjusza"); + + +Rule "Brev: st. C" + +Match: [pos~~"Brev" && fullstoppedness~~"pun" && base~~"stopień"] ns? + [pos~~"brev" && base~~"Celsjusza|Celsjusz"]; +Eval: word(Brev:npun:NG, "stopień Celsjusza"); + + +Rule "Brev: C" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"Celsjusza"]; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: o (stopień)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"stopień"]; +Right: []; +Eval: word(Brev:npun:NOUN, 1.base); + + +Rule "Brev: Mbps" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"megabajt.na.sekundę"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: Kbps" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"kilobajt.na.sekundę"]; +Eval: word(Brev:npun:NG, 1.base); + + +Rule "Brev: km/h" + +Match: [orth~"km"] ns [base~"/"] ns [orth~"h"]; +Eval: word(Brev:npun:NG, "kilometr na godzinę"); + + +Rule "Brev: m/sek" + +Match: [orth~"m"] ns [base~"/"] ns [orth~"sek"]; +Eval: word(Brev:pun:NG, "metr na sekundę"); +#! czy to ma być pun? + + +Rule "Brev: kg/Mg" + +Match: [orth~"kg"] ns [base~"/"] ns [orth~"Mg"]; +Eval: word(Brev:npun:NG, "kilogram na megagram"); + + +Rule "Brev: kg/Mg" + +Match: [orth~"pg"] ns [base~"/"] ns [orth~"ml"]; +Eval: word(Brev:npun:NG, "pikogram na mililitr"); + + +Rule "Brev: q/ha" + +Match: [orth~"q"] ns [base~"/"] ns [orth~"ha"]; +Eval: word(Brev:npun:NG, "kwintal na hektar"); + + +Rule "Brev: we/wy" + +Match: [orth~"we"] ns [base~"/"] ns [orth~"wy"]; +Eval: word(Brev:npun:NG, "wejście/wyjście"); + + +Rule "Brev: sp. z o.o." + +Match: [orth~"[Ss]p"] ns [base~"\."] [base~"z"] [orth~"o.o"] ns [base~"\."]; +Eval: word(Brev:pun:NG, "spółka z ograniczoną odpowiedzialnością"); + + +Rule "Brev: wg (2)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"według"]; +Right: [base~"\""] ns + [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" && case~~"gen"]; +Eval: word(Brev:npun:PREP, 1.base); + + +Rule "Brev: wg (1)" + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"według"]; +Right: [pos~~"subst|ger|adj|ppron12|ppron3|siebie|num|numcol|ppas|pact" + && case~~"gen"]; +Eval: word(Brev:npun:PREP, 1.base); + + +Rule "Brev: wg + proj." + +Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"według"]; +Right: [base~"projekt" && pos~"Brev"]; +Eval: word(Brev:npun:PREP, 1.base); +#reguła szczegółowa + + +#Rule "Brev: xxx" +# +#Match: [pos~~"brev" && fullstoppedness~~"npun" && base~~"xxx"]; +#Eval: word(Brev:npun:NOUN, 1.base); + +#Rule "skrót z kropką (1.1)" +# +#Match: [pos~~"brev" && fullstoppedness~~"pun"] ns [base~"\."]; +#Right: []; +#Eval: word(Brev:pun, 1.base); + +#Rule "skrót z kropką (1.1a)" +# +#Match: [pos~~"brev" && fullstoppedness~~"pun"] ns [base~"\."]; +#Right: ns [pos~"interp"]; +#Eval: word(Brev:pun, 1.base); + +#Rule "skrót z kropką na końcu zdania" +# +#Match: [pos~~"brev" && fullstoppedness~~"pun"] ns [base~"\."]; +#Right: se; +#Eval: word(Brev-se:pun, 1.base); + +#Rule "skrót bez kropki" +# +#Match: [pos~~"brev" && fullstoppedness~~"npun"]; +#Eval: word(Brev:npun, 1.base); + +#Rule "skrót z kropką (1.2)" +# +#Match: [pos~~"brev" && fullstoppedness~~"pun"] ns [base~"\."]; +#Right: []; +#Eval: word(Brev:pun, 1.base); + + +Rule "wielokropek" + +Match: [base~~"\."] ns [base~"\."] ns [base~~"\."]; +Eval: word(Interp, 0.base); + + +Rule "skrótowce w gen pl " + +Match: [pos~~"ign"] ns [base~"-"] ns [base~~"owców"]; +Eval: word(Noun:pl:gen:m1, 1.base "-owiec"); +#jeśli to dobra reguła (chodzi o "ign", to ją rozmnożyć + + +Rule "Adj: opisowy stopień wyższy" + +Match: [orth~"[Bb]ardziej"] [pos~"adj"]; +Eval: word(2, Adj:com, 2.base); + + +Rule "Adv: opisowy stopień wyższy" + +Match: [orth~"[Bb]ardziej"] [pos~"adv"]; +Eval: word(2, Adv:com, 2.base); + + +Rule "Adj: opisowy stopień najwyższy" + +Match: [orth~"[Nn]ajbardziej"] [pos~"adj"]; +Eval: word(2, Adj:sup, 2.base); + + +Rule "Adv: opisowy stopień najwyższy" + +Match: [orth~"[Nn]ajbardziej"] [pos~"adv"]; +Eval: word(2, Adv:sup, 2.base); + + + +Rule "liczba z kropką w określeniu godziny (1)" + +Left: [pos~~"prep"] [base~"godzina"]; +Match: [orth~"[0-9][0-9]?" && pos~"adj"] + ns [base~"\."]; +Right: ns? [orth~"[0-9][0-9]*" && pos~"num"]; +Eval: unify(case,1,2,3); + word(3, Adj, 3.base); + + +Rule "liczba z kropką w określeniu godziny (1a)" + +Left: [pos~~"prep"] [orth~"godz\."]; +Match: [orth~"[0-9][0-9]?" && pos~"adj"] + ns [base~"\."]; +Right: ns? [orth~"[0-9][0-9]*" && pos~"num"]; +Eval: unify(case,1,3); + word(3, Adj, 3.base); + + +Rule "liczba z kropką w określeniu godziny (2)" + +Left: [pos~~"prep"]; +Match: [orth~"[0-9][0-9]?" && pos~"adj"] + ns [base~"\."]; +Right: ns? [orth~"[0-9][0-9]*" && pos~"num"]; +Eval: unify(case,1,2); + word(2, Adj, 2.base); + + +Rule "liczba z kropką w określeniu godziny (3)" + +Left: [base~"godzina"]; +Match: [orth~"[0-9][0-9]?" && pos~"adj"] + ns [base~"\."]; +Right: ns? [orth~"[0-9][0-9]*" && pos~"num"]; +Eval: unify(case number gender,1,2); + word(2, Adj, 2.base); + + +Rule "liczba z kropką (1)" + +Left: []; +Match: [pos~~"adj" && base~~"[0-9]+"] ns [base~"\."]; +Right: []; +Eval: word(2, Adj, 2.base); + + +Rule "liczba z kropką (2)" + +Left: []; +Match: [pos~~"adj" && base~~"[0-9]+"] ns [base~"\."]; +Right: ns [pos~"interp"]; +Eval: word(2, Adj, 2.base); + + +Rule "liczba z kropką (3)" + +Left: [base!~"artykuł|paragraf|ustęp|punkt"]; +Match: [pos~~"adj" && base~~"[0-9]+"] ns [base~"\."]; +Right: se; +Eval: word(2, Adj-se, 2.base); + + +Rule "ułamki: 1/2" + +Match: [base~"1" && pos~"adj"] + ns [base~"/"] ns + [base~"[1-9][0-9]?" && pos~"adj"]; +Eval: word(Num:1.number:1.case:1.gender:rec, 0.base); #LD zmiana +#Eval: word(1, Num:rec, 0.base); + + +Rule "ułamki: 10/11 itp." + +Match: [base~"[1-9][0-9]" && pos~"num"] + ns [base~"/"] ns + [base~"[1-9][0-9]+" && pos~"adj"]; +Eval: word(Num:1.number:1.case:1.gender:rec, 0.base); #LD zmiana +#Eval: word(1, Num:rec, 0.base); + + +Rule "ułamki: 2/3 itp." + +Match: [base~"[2-9]" && pos~"num"] + ns [base~"/"] ns + [base~"[1-9][0-9]?" && pos~"adj"]; +Eval: word(Num:1.number:1.case:1.gender:rec, 0.base); #LD zmiana +#Eval: word(1, Num:rec, 0.base); + + +Rule "adja-adja-adja-adj" #polsko-brytyjsko-holendersko-kanadyjski + +Match: [pos~"adja"] ns [base~"-"] ns [pos~"adja"] ns [base~"-"] ns [pos~"adja"] ns [base~"-"] ns [pos~"adj"]; +Eval: word(13, Adj, 1.orth "-" 5.orth "-" 9.orth "-" 13.base); + + +Rule "adja-adja-adj" #biurowo-handlowo-usługowy + +Match: [pos~"adja"] ns [base~"-"] ns [pos~"adja"] ns [base~"-"] ns? [pos~"adj"]; +Eval: word(9, Adj, 1.orth "-" 5.orth "-" 9.base); + + +Rule "adja-adj" #rolno-spożywczy + +Match: [pos~"adja"] ns [base~"-"] ns [pos~"adj"]; +Eval: word(5, Adj, 1.orth "-" 5.base); + + +Rule "adja-adj (inny dywiz)" + +Match: [pos~"adja"] ns [base~"–"] ns [pos~"adj"]; +Eval: word(5, Adj, 1.orth "-" 5.base); + + +Rule "adja - adj" #ze spacjami + +Match: [pos~"adja"] [base~"-"] [pos~"adj"]; +Eval: word(3, Adj, 1.orth"-"3.base); + + +Rule "inne-adj" #zero-procentowy + +Match: [] ns [base~"-"] ns [pos~"adj"]; +Eval: word(5, Adj, 1.orth "-" 5.base); + + +#Rule "coś-subst" +# +#Match: [] ns [base~"-"] ns [pos~"subst"]; +#Eval: word(5, Noun, 1.base "-" 5.base); +#!To zamieniłam na regułę ostrzejszą: + +Rule "subst-subst" + +Match: [pos~"subst"] ns [base~"-"] ns [pos~"subst"]; +Eval: unify(case,1,5); + word(5, Noun, 1.base "-" 5.base); + + +Rule "subst w cudzysłowie" + +Match: [orth~"\""] ns [pos~"subst"] ns [orth~"\""]; +Eval: word(3, Noun, 0.base); + + +Rule "subst w innym cudzysłowie" + +Match: [orth~"„|“|”|\""] ns [pos~"subst"] ns [orth~"”|’’"]; +Eval: word(3, Noun, 0.base); + + +Rule "subst w cudzysłowie (przecinki)" + +Match: [base~","] ns [base~","] ns [pos~"subst"] ns [orth~"\""]; +Eval: word(5, Noun, 0.base); + + +Rule "subst w cudzysłowie (z tyłu apostrofy)" + +Match: [orth~"„"] ns [pos~"subst"] ns [base~"’"] ns [base~"’"]; +Eval: word(3, Noun, 0.base); +##!!a może zamienić te wszystkie dziwne cudzysłowy na normalne (w base) + + +Rule "subst w apostrofach" + +Match: [orth~"'"] ns [pos~"subst"] ns [base~"'"]; +Eval: word(3, Noun, 0.base); + + +Rule "subst w cudzysłowie (nawiasy kątowe)" + +Match: [base~">"] ns [base~">"] + ns [pos~"subst"] ns + [base~"<"] ns [base~"<"]; +Eval: word(5, Noun, 0.base); + + +Rule "adj w cudzysłowie" + +Match: [orth~"\""] ns [pos~"adj"] ns [orth~"\""]; +Eval: word(3, Adj, 0.base); + + +Rule "Pred: tryb przypuszczający - czas przeszły (1)" + +Match: [pos~"pred"] [base~"by"] [base~"być" && pos~"praet"]; +Eval: word(Pred:past:cond:imperf:aff, 1.base); #LD dodałam "aff" + + +Rule "Pred: tryb przypuszczający - czas przeszły (2)" + +Match: [pos~"pred"] [base~"być" && pos~"praet"] ns [base~"by"]; +Eval: word(Pred:past:cond:imperf:aff, 1.base); #LD dodałam "aff" +#brak przykładu + + +Rule "Pred: tryb przypuszczający - czas teraźniejszy" + +Match: [pos~"pred" && base!~"to"] [base~"by"]; +Eval: word(Pred:pres:cond:imperf:aff, 1.base); #LD dodałam "aff" + + +Rule "Pred: zanegowany czas przeszły (1)" + +Match: [base~~"nie" && pos~~"qub"] [base~"być" && pos~"praet"] [pos~"pred"]; +Eval: word(Pred:past:ind:imperf:neg, 3.base); + + +Rule "Pred: zanegowany czas przeszły (2)" + +Match: [pos~"pred"] [base~~"nie" && pos~~"qub"] [base~"być" && pos~"praet"]; +Eval: word(Pred:past:ind:imperf:neg, 1.base); + + +Rule "Pred: czas przeszły (1)" + +Match: [base~"być" && pos~"praet"] [pos~"pred"]; +Eval: word(Pred:past:ind:imperf:aff, 2.base); #LD dodałam "aff" + + +Rule "Pred: czas przeszły (2)" + +Match: [pos~"pred"] [base~"być" && pos~"praet"]; +Eval: word(Pred:past:ind:imperf:aff, 1.base); #LD dodałam "aff" + + +Rule "Pred: czas przyszły z negacją (1)" + +Match: [base~~"nie" && pos~~"qub"] [base~"być" && pos~"bedzie"] [pos~"pred"]; +Eval: word(Pred:fut:ind:imperf:neg, 2.base); + + +Rule "Pred: czas przyszły z negacją (2)" + +Match: [pos~"pred"] [base~~"nie" && pos~~"qub"] [base~"być" && pos~"bedzie"]; +Eval: word(Pred:fut:ind:imperf:neg, 1.base); + + +Rule "Pred: czas przyszły (1)" + +Match: [base~"być" && pos~"bedzie"] [pos~"pred"]; +Eval: word(Pred:fut:ind:imperf:aff, 2.base); + + +Rule "Pred: czas przyszły (2)" + +Match: [pos~"pred"] [base~"być" && pos~"bedzie"]; +Eval: word(Pred:fut:ind:imperf:aff, 1.base); + + +Rule "Pred: czas teraźniejszy z negacją (1)" + +Match: [base~~"nie" && pos~~"qub"] [base~"być" && pos~"fin"] [pos~"pred"]; +Eval: word(Pred:pres:ind:imperf:neg, 3.base); + + +Rule "Pred: czas teraźniejszy z negacją (2)" + +Match: [pos~"pred"] [base~~"nie" && pos~~"qub"] [base~"być" && pos~"fin"]; +Eval: word(Pred:pres:ind:imperf:neg, 1.base); + + +Rule "Pred: czas teraźniejszy (1)" + +Match: [base~"być" && pos~"fin"] [pos~"pred"]; +Eval: word(Pred:pres:ind:imperf:aff, 2.base); #LD dodałam "aff" + + +Rule "Pred: czas teraźniejszy (2)" + +Match: [pos~"pred"] [base~"być" && pos~"fin"]; +Eval: word(Pred:pres:ind:imperf:aff, 1.base); #LD dodałam "aff" + + +#LD Jedna nowa reguła zamiast dwóch starych +Rule "praet + aglt" + +Match: [pos~"praet"] ns [pos~"aglt"]; +Eval: word(Verbfin:1.number:3.person:past:ind:1.aspect:nrefl:aff:1.gender, 1.base); + + +#Rule "Praet + Aglt (1. osoba)" +# +#Match: [pos~"praet"] ns [pos~"aglt" && person~"pri"]; +#Eval: word(1, Verbfin:pri:past:ind, 1.base); +# +#Rule "Praet + Aglt (2. osoba)" +# +#Match: [pos~"praet"] ns [pos~"aglt" && person~"sec"]; +#Eval: word(1, Verbfin:sec:past:ind, 1.base); + + +#LD 2 reguły na tryb warunkowy zamieniłam na 4, a potem znów na 2, ale inne +Rule "praet(imperf) + by + aglt" + +Match: [pos~"praet" && aspect~"imperf"] ns [base~"by"] ns [pos~"aglt"]; +Eval: word(Verbfin:1.number:5.person:pres:cond:1.aspect:nrefl:aff:1.gender, 1.base); + + +Rule "praet(perf) + by + aglt" + +Match: [pos~"praet" && aspect~"perf"] ns [base~"by"] ns [pos~"aglt"]; +Eval: word(Verbfin:1.number:5.person:fut:cond:1.aspect:nrefl:aff:1.gender, 1.base); + + +#Rule "Praet(imperf) + by + Aglt (1. osoba)" +# +#Match: [pos~"praet" && aspect~"imperf"] ns [base~"by"] +# ns [pos~"aglt" && person~"pri"]; +#Eval: word(1, Verbfin:pri:pres:cond, 1.base); +# +#Rule "Praet(perf) + by + Aglt (1. osoba)" +# +#Match: [pos~"praet" && aspect~"perf"] ns [base~"by"] +# ns [pos~"aglt" && person~"pri"]; +#Eval: word(1, Verbfin:pri:fut:cond, 1.base); +# +#Rule "Praet(imperf) + by + Aglt (2. osoba)" +# +#Match: [pos~"praet" && aspect~"imperf"] ns [base~"by"] +# ns [pos~"aglt" && person~"sec"]; +#Eval: word(1, Verbfin:sec:pres:cond, 1.base); +# +#Rule "Praet(perf) + by + Aglt (2. osoba)" +# +#Match: [pos~"praet" && aspect~"perf"] ns [base~"by"] +# ns [pos~"aglt" && person~"sec"]; +#Eval: word(1, Verbfin:sec:fut:cond, 1.base); + + +#LD Tu regułę zamieniłam na 2. i zmieniłam linię Eval +Rule "praet(imperf) + by" + +Match: [pos~"praet" && aspect~"imperf"] ns [base~"by"]; +Eval: word(Verbfin:1.number:ter:pres:cond:1.aspect:nrefl:aff:1.gender, 1.base); + + +Rule "praet(perf) + by" + +Match: [pos~"praet" && aspect~"perf"] ns [base~"by"]; +Eval: word(Verbfin:1.number:ter:fut:cond:1.aspect:nrefl:aff:1.gender, 1.base); + + +Rule "imps + by" + +Match: [pos~"imps"] [base~"by"]; +Eval: word(Imps:cond:1.aspect:nrefl:aff, 1.base); #LD zmiana +#Eval: word(1, Imps:cond, 1.base); + + +Rule "by + imps" + +Match: [base~"by"] [pos~"imps"]; +Eval: word(Imps:cond:2.aspect:nrefl:aff, 2.base); #LD zmiana +#Eval: word(2, Imps:cond, 2.base); + + +#LD Jedna nowa reguła zamiast dwóch starych +Rule "winien + aglt - czas przeszły" + +Match: [pos~"winien"] ns [pos~"aglt"] [base~"być" && pos~"praet"]; +Eval: word(Winien:1.number:3.person:1.gender:past:ind:1.aspect:nrefl:aff, 1.base); + + +#Rule "Winien - czas przeszły (1. osoba)" +# +#Match: [pos~"winien"] ns [pos~"aglt" && person~"pri"] +# [base~"być" && pos~"praet"]; +#Eval: word(1, Winien:pri:past:ind, 1.base); +# +#Rule "Winien - czas przeszły (2. osoba)" +# +#Match: [pos~"winien"] ns [pos~"aglt" && person~"sec"] +# [base~"być" && pos~"praet"]; +#Eval: word(1, Winien:sec:past:ind, 1.base); + + +Rule "Winien - czas przeszły (3. osoba)" + +Match: [pos~"winien"] [base~"być" && pos~"praet"]; +Eval: word(1, Winien:ter:past:ind:nrefl:aff, 1.base); #LD dodałam "nrefl:aff" + + +#LD Jedna nowa reguła zamiast dwóch starych +Rule "winien + by + aglt - tryb przypuszczający" + +Match: [pos~"winien"] [base~"by"] ns [pos~"aglt"]; +Eval: word(Winien:1.number:4.person:1.gender:pres:cond:1.aspect:nrefl:aff, 1.base); + + +#Rule "Winien + by + Aglt (1. osoba)" +# +#Match: [pos~"winien"] [base~"by"] ns [pos~"aglt" && person~"pri"]; +#Eval: word(1, Winien:pri:pres:cond, 1.base); +# +#Rule "Winien + by + Aglt (2. osoba)" +# +#Match: [pos~"winien"] [base~"by"] ns [pos~"aglt" && person~"sec"]; +#Eval: word(1, Winien:sec:pres:cond, 1.base); + + +Rule "Winien + by (3. osoba)" + +Match: [pos~"winien"] [base~"by"]; +Eval: word(1, Winien:ter:pres:cond:nrefl:aff, 1.base); #LD dodałam "nrefl:aff" + + +#LD Jedna nowa reguła zamiast dwóch starych +Rule "winien + aglt - czas teraźniejszy" + +Match: [pos~"winien"] ns [pos~"aglt"]; +Eval: word(Winien:1.number:3.person:1.gender:pres:ind:1.aspect:nrefl:aff, 1.base); + + +#Rule "Winien + Aglt (1. osoba)" +# +#Match: [pos~"winien"] ns [pos~"aglt" && person~"pri"]; +#Eval: word(1, Winien:pri:pres:ind, 1.base); +# +#Rule "Winien + Aglt (2. osoba)" +# +#Match: [pos~"winien"] ns [pos~"aglt" && person~"sec"]; +#Eval: word(1, Winien:sec:pres:ind, 1.base); + + +Rule "Winien (3. osoba)" + +Match: [pos~"winien"]; +Eval: word(1, Winien:ter:pres:ind:nrefl:aff, 1.base); #LD dodałam "nrefl:aff" + + +Rule "czas przyszły: bedzie + się + inf" + +Match: [pos~"bedzie"] [base~"się"] [pos~"inf"]; +Eval: word(1, Verbfin:fut:ind:refl:aff, 3.base); + + +Rule "czas przyszły: inf + się + bedzie" + +Match: [pos~"inf"] [base~"się"] [pos~"bedzie"]; +Eval: word(3, Verbfin:fut:ind:refl:aff, 1.base); + + +Rule "czas przyszły: bedzie + inf" + +Match: [pos~"bedzie"] [pos~"inf"]; +Eval: word(1, Verbfin:fut:ind:nrefl:aff, 2.base); #LD dodałam "nrefl:aff" + + +Rule "czas przyszły: inf + bedzie" + +Match: [pos~"inf"] [pos~"bedzie"]; +Eval: word(2, Verbfin:fut:ind:nrefl:aff, 1.base); #LD dodałam "nrefl:aff" + + +#LD Jedna nowa reguła zamiast pięciu starych. +Rule "czas przyszły: bedzie się + praet" + +Match: [pos~"bedzie"] [base~"się"] + [pos~"praet" && aspect~"imperf"]; +Eval: word(Verbfin:1.number:1.person:fut:ind:1.aspect:refl:aff:3.gender, 3.base); + + +#rozmnożone reguły (rodzaj z praet) +#Rule "czas przyszły: bedzie się + praet (m1)" +# +#Match: [pos~"bedzie"] [base~"się"] +# [pos~"praet" && aspect~"imperf" && gender~"m1"]; +#Eval: word(1, Verbfin:fut:ind:refl:m1, 3.base); +# +#Rule "czas przyszły: bedzie się + praet (m2)" +# +#Match: [pos~"bedzie"] [base~"się"] +# [pos~"praet" && aspect~"imperf" && gender~"m2"]; +#Eval: word(1, Verbfin:fut:ind:refl:m2, 3.base); +# +#Rule "czas przyszły: bedzie się + praet (m3)" +# +#Match: [pos~"bedzie"] [base~"się"] +# [pos~"praet" && aspect~"imperf" && gender~"m3"]; +#Eval: word(1, Verbfin:fut:ind:refl:m3, 3.base); +# +#Rule "czas przyszły: bedzie się + praet (f)" +# +#Match: [pos~"bedzie"] [base~"się"] +# [pos~"praet" && aspect~"imperf" && gender~"f"]; +#Eval: word(1, Verbfin:fut:ind:refl:f, 3.base); +# +#Rule "czas przyszły: bedzie się + praet (n)" +# +#Match: [pos~"bedzie"] [base~"się"] +# [pos~"praet" && aspect~"imperf" && gender~"n"]; +#Eval: word(1, Verbfin:fut:ind:refl:n, 3.base); + + +#LD Jedna nowa reguła zamiast pięciu starych. +Rule "czas przyszły: bedzie + praet" + +Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf"]; +Eval: word(Verbfin:1.number:1.person:fut:ind:1.aspect:nrefl:aff:2.gender, 2.base); + + +#rozmnożone reguły (rodzaj z praet) +#Rule "czas przyszły: bedzie + praet (m1)" +# +#Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf" && gender~"m1"]; +#Eval: word(1, Verbfin:fut:ind:m1, 2.base); +# +#Rule "czas przyszły: bedzie + praet (m2)" +# +#Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf" && gender~"m2"]; +#Eval: word(1, Verbfin:fut:ind:m2, 2.base); +# +#Rule "czas przyszły: bedzie + praet (m3)" +# +##Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf" && gender~"m3"]; +#Eval: word(1, Verbfin:fut:ind:m3, 2.base); +# +#Rule "czas przyszły: bedzie + praet (f)" +# +#Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf" && gender~"f"]; +#Eval: word(1, Verbfin:fut:ind:f, 2.base); +# +#Rule "czas przyszły: bedzie + praet (n)" +# +#Match: [pos~"bedzie"] [pos~"praet" && aspect~"imperf" && gender~"n"]; +#Eval: word(1, Verbfin:fut:ind:n, 2.base); + + +#LD Jedna nowa reguła zamiast pięciu starych. +Rule "czas przyszły: praet + bedzie" + +Match: [pos~"praet" && aspect~"imperf"] [pos~"bedzie"]; +Eval: word(Verbfin:2.number:2.person:fut:ind:2.aspect:nrefl:aff:1.gender, 1.base); + + +#rozmnożone reguły (rodzaj z praet) +#Rule "czas przyszły: praet (m1) + bedzie" +# +#Match: [pos~"praet" && aspect~"imperf" && gender~"m1"] [pos~"bedzie"]; +#Eval: word(2, Verbfin:fut:ind:m1, 1.base); +# +#Rule "czas przyszły: praet (m2) + bedzie" +# +#Match: [pos~"praet" && aspect~"imperf" && gender~"m2"] [pos~"bedzie"]; +#Eval: word(2, Verbfin:fut:ind:m2, 1.base); +# +#Rule "czas przyszły: praet (m3) + bedzie" +# +#Match: [pos~"praet" && aspect~"imperf" && gender~"m3"] [pos~"bedzie"]; +#Eval: word(2, Verbfin:fut:ind:m3, 1.base); +# +#Rule "czas przyszły: praet (f) + bedzie" +# +#Match: [pos~"praet" && aspect~"imperf" && gender~"f"] [pos~"bedzie"]; +#Eval: word(2, Verbfin:fut:ind:f, 1.base); +# +#Rule "czas przyszły: praet (n) + bedzie" +# +#Match: [pos~"praet" && aspect~"imperf" && gender~"n"] [pos~"bedzie"]; +#Eval: word(2, Verbfin:fut:ind:n, 1.base); + + +#info: Ta reguła musi być po innych z "bedzie" +Rule "bedzie -> Verbfin" + +Match: [pos~~"bedzie"]; +Eval: word(1, Verbfin:fut:ind:nrefl:aff, ); #LD dodałam "aff" + + +#info: Ta reguła musi być po czasie przyszłym złożonym i innych dla praet +Rule "praet -> Verbfin" + +Match: [pos~~"praet"]; +Eval: word(Verbfin:1.number:ter:past:ind:1.aspect:nrefl:aff:1.gender, 1.base); #LD zmieniłam całą linię +#Eval: word(1, Verbfin:ter:past:ind:nrefl:aff, ); + + +Rule "fin perf -> Verbfin" + +Match: [pos~~"fin" && aspect~~"perf"]; +Eval: word(1, Verbfin:fut:ind:nrefl:aff, ); #LD dodałam ind:nrefl:aff + + +Rule "fin imperf -> Verbfin" + +Match: [pos~~"fin" && aspect~"imperf"]; +Eval: word(1, Verbfin:pres:ind:nrefl:aff, ); #LD dodałam ind:nrefl:aff + + +#LD Regułę "impt -> Verbfin" rozbiłam na dwie. +Rule "impt imperf -> Verbfin" + +Match: [pos~~"impt" && aspect~"imperf"]; +Eval: word(1, Verbfin:pres:imp:nrefl:aff, ); #LD dodałam nrefl:aff + + +Rule "impt perf -> Verbfin" + +Match: [pos~~"impt" && aspect~"perf"]; +Eval: word(1, Verbfin:fut:imp:nrefl:aff, ); #LD dodałam nrefl:aff + + +Rule "tryb rozkazujący z niech: niech + czasownik" + +Match: [base~"niech|niechaj" && pos~"qub"] [pos~"Verbfin" && tense!~past]; +Eval: alter(2, imp, 2.base); #LD zamiast word jest alter +#Eval: word(2, imp, 2.base); + + +Rule "tryb rozkazujący z niech: niech + się + czasownik" + +Match: [base~"niech|niechaj" && pos~"qub"] + [orth~"się"] [pos~"Verbfin" && tense!~past]; +Eval: alter(3, imp:refl, 3.base); #LD zamiast word jest alter +#Eval: word(3, imp:refl, 3.base); + + + +#!!!byc może ta reguła niepotrzebna (sprawdzić) +#Rule "tryb oznajm. dla reszty" +# +#Match: [pos~"Verbfin|Winien|Pred" && mood!~"cond|imp"]; +#Eval: #word(1, ind, ); +# set(1.pos:1.number:1.person:1.tense:ind:1.aspect:1.gender, , 1); +# alter(1, ind, ); #LD zamiast word jest alter + + +Rule "imps -> Imps" + +Match: [pos~~"imps"]; +Eval: word(1, Imps:ind:nrefl:aff, ); #LD dopisałam "nrefl:aff" + + +Rule "inf -> Inf" + +Match: [pos~~"inf"]; +Eval: word(1, Inf:nrefl:aff, ); #LD dopisałam "nrefl:aff" + + +#LD nowa reguła +Rule "negacja dla predykatywów" + +Match: [base~"nie" && pos~"qub"] [pos~"pred"]; +Eval: word(2, Pred:pres:ind:imperf:neg, 2.base); +#info: "nie" nie wchodzi do base + + +Rule "pred -> Pred" + +Match: [pos~~"pred"]; +Eval: word(1, Pred:pres:ind:imperf:aff, ); #LD dopisane "aff" +#Predykatyw "to" również otrzymuje te trzy wartości. + + +#Rule "winien -> Winien" +# +#Match: [pos~~"winien"]; +#Eval: word(1, Winien, ); + + +Rule "pant -> Pant" + +Match: [pos~~"pant"]; +Eval: word(1, Pant:nrefl:aff, ); #LD dopisałam nrefl: + + +Rule "pcon -> Pcon" + +Match: [pos~~"pcon"]; +Eval: word(1, Pcon:nrefl:aff, ); #LD dopisałam nrefl: + + +Rule "pact -> Pact" + +Match: [pos~~"pact"]; +Eval: word(1, Pact:nrefl, ); #LD dopisałam nrefl: + + +Rule "ppas -> Ppas" + +Match: [pos~~"ppas"]; +Eval: word(1, Ppas:nrefl, ); #LD dopisałam nrefl: + + +Rule "zwrotność dla czasowników, imiesłowów itp. (3a)" + +Match: [orth~"[Ss]ię"] [base~"nie" && pos~"qub"] + [pos~"Verbfin|Imps|Inf|Pant|Pcon|Pact|Ppas"]; +Eval: word(3, refl:neg, 3.base " " 1.base); + + +Rule "zwrotność: czasownik modalny + się + bezokolicznik" + +Left: [pos~"Verbfin|Pred" + && base~"musieć|móc|mieć|należeć|wypadać|woleć|chcieć|trzeba|warto|można|wolno"]; +Match: [orth~"się"] [pos~"Inf"]; +Eval: word(3, refl, 3.base " " 2.base); + + +Rule "zwrotność: inny czasownik + się + bezokolicznik" + +Match: [pos~"Verbfin"] [orth~"się"]; +Right: [pos~"Inf"]; +Eval: word(1, refl, 0.base); + + +Rule "zwrotność dla czasowników, imiesłowów itp. (1)" + +Match: [pos~"Verbfin|Imps|Inf|Pant|Pcon|Pact|Ppas"] [orth~"się"]; +Eval: word(1, refl, 0.base); + + +Rule "zwrotność dla czasowników, imiesłowów itp. (2)" + +Match: [orth~"[Ss]ię"] [pos~"Verbfin|Imps|Inf|Pant|Pcon|Pact|Ppas"]; +Eval: word(2, refl, 2.base " " 1.base); + + +Rule "zwrotność dla gerundiów (3)" + +Match: [orth~"[Ss]ię"] [base~"nie" && pos~"qub"] [pos~"ger"]; +Eval: word(3, Noun:refl:neg, 3.base " " 1.base); + + +Rule "zwrotność dla gerundiów (1)" + +Match: [pos~"ger"] [orth~"się"]; +Eval: word(1, Noun:refl, 0.base); + + +Rule "zwrotność dla gerundiów (2)" + +Match: [orth~"[Ss]ię"] [pos~"ger"]; +Eval: word(2, Noun:refl, 2.base " " 1.base); + + +#ta reguła za chwilę będzie niepotrzebna +#Rule "nrefl dla reszty" +# +#Match: [pos~"Verbfin|Ger" && reflexivity!~"refl"]; #LD usunęłam Pcon, Pant, Inf, Ppas, Pact, Imps +#Eval: #word(1, nrefl, ); +# alter(1, nrefl, ); #LD zamiast word jest alter +#co ze zwrotnością dla Ger, która teraz jest Noun + + +Rule "negacja dla czasowników, imiesłowów" + +Match: [base~"nie" && pos~"qub"] + ([pos~"Verbfin|Pred|Winien|Imps|Inf|Pant|Pcon|Pact|Ppas|Ger"]); +Eval: word(2, neg, 2.base); +#info: "nie" nie wchodzi do base + + +#ta reguła za chwilę będzie niepotrzebna +#Rule "brak negacji dla reszty" +# +#Match: [pos~"Verbfin|Winien|Pred|Ger" && negation!~"neg"]; #LD usunęłam Pcon, Pant, Inf, Ppas, Pact, Imps +#Eval: #word(1, aff, ); +# alter(1, aff, ); #LD zamiast word jest alter + + +Rule "Verbfin w cudzysłowie" + +Match: [orth~"\""] ns [pos~"Verbfin"] ns [orth~"\""]; +Eval: word(3, Verbfin, 0.base); + + +Rule "adjc -> Adjc" + +Match: [pos~~"adjc"]; +Eval: word(1, Adjc, ); + + +Rule "adj -> Adj" + +Match: [pos~~"adj"]; +Eval: word(1, Adj, ); + + +Rule "adv -> Adv" + +Match: [pos~~"adv"]; +Eval: word(1, Adv, ); + + +Rule "conj -> Conj" + +Match: [pos~~"conj"]; +Eval: word(1, Conj, ); + + +Rule "comp -> Comp" + +Match: [pos~~"comp"]; +Eval: word(1, Comp, ); + + +Rule "interj -> Interj" + +Match: [pos~~"interj"]; +Eval: word(1, Interj, ); + + +Rule "interp -> Interp" + +Match: [pos~~"interp"]; +Eval: word(1, Interp, ); + + +Rule "qub -> Qub" + +Match: [pos~~"qub"]; +Eval: word(1, Qub, ); + + +Rule "prep -> Prep" + +Match: [pos~~"prep"]; +Eval: word(1, Prep, ); + + +Rule "subst|depr|ger -> Noun" + +Match: [pos~~"subst|depr|ger"]; +Eval: word(1, Noun, ); + + +Rule "num -> Num" + +Match: [pos~~"num"]; +Eval: word(1, Num, ); + + +Rule "numcol -> Numcol" + +Match: [pos~~"numcol"]; +Eval: word(1, Numcol, ); + + +Rule "ppron12 -> Ppron12" + +Match: [pos~~"ppron12"]; +Eval: word(1, Ppron12, ); + + +Rule "ppron3 -> Ppron3" + +Match: [pos~~"ppron3"]; +Eval: word(1, Ppron3, ); + + +Rule "siebie -> Siebie" + +Match: [pos~~"siebie"]; +Eval: word(1, Siebie, ); + + +Rule "xxx -> Xxx" + +Match: [pos~~"xxx"]; +Eval: word(1, Xxx, ); + + +#*Brev +#Rule "brev -> Brev" +# +#Match: [pos~~"brev"]; +#Eval: word(1, Brev, ); + +################## 1. GRUPY SKŁADNIOWE + +################ 1.2 GRUPY NIEZAGNIEŻDŻONE + +Rule "tytuły" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [orth~"[A-ZĆŁŚŹŻ].*"][]* ns + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG,3,3); + + +############### ADRESY + +Rule "NGadres: ul. + nazwa (Adj)" + +Match: [base~"ulica|plac|aleja"] + [orth~"[A-ZŻŁÓŚĆŹ].*" && pos~"Adj"]; + #[orth~"[0-9][0-9]*"]?; Czy numery nie są zagnieżdżone? +Eval: group(NGadres,1,1); + + +########### DATY + +Rule "NGdata: pełna data cyframi" + +Match: [orth~"[0-9][0-9]?"] ns [orth~"\."] ns + [orth~"[0-9][0-9]?"] ns [orth~"\."] ns + [orth~"[1-9][0-9]*"] [orth~"r."]?; +Eval: group(NGdata,5,5); + + +Rule "NGdata: pełna data" + +Match: [base~"dzień"]? + [orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])? + ([base~"styczeń|luty|marzec|kwiecień||kwi|maj|czerwiec|lipiec|sierpień|wrzesień|październik|listopad|grudzień"] | [orth~"bm\."]) + ([orth~"[1-9][0-9]*"] ns? [orth~"zeszłego|tego|ubiegłego"]? [base~"rok"] | [pos~"Brev" && base~"bieżącego.roku"])?; +Eval: group(NGdata,4,4); + +Rule "NGdata: miesiąc + rok" + +Match: [pos~"Adj"]? + [base~"styczeń|luty|marzec|kwiecień|maj|czerwiec|lipiec|sierpień|wrzesień|październik|listopad|grudzień"] + ([orth~"[1-9][0-9]*"] ns? [base~"rok"]? | [pos~"Brev" && base~"bieżącego.roku|ubiegłego.roku"] | ([pos~"Brev" && base~"ubiegły"] [orth~"roku"])); +Eval: unify(number case gender,1,2); + group(NGdata,2,2); + +Rule "NGdata: pełna data (miesiąc rzymskimi)" + +Match: [orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])? + [base~"I|II|III|IV|V|VI|VII|VIII|IX|X|XI|XII"] + [orth~"[1-9][0-9]*"]? [base~"rok"]?; +Eval: group(NGdata,3,3); + +Rule "NGdata: liczba cyframi + rok" + +Match: [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])? + ([pos~"Brev" && base~"rok"] | [pos~"Noun" && base~"rok" && number~"sg"]); +Eval: group(NGdata,3,3); + +Rule "NGdata: (Adj) + rok + liczba cyframi" + +Match: [pos~"Adj"]? + [base~"rok"] + ([orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] | ([orth~"[1-9][0-9]*"] ns? [orth~"-|/"] ns? [orth~"[1-9][0-9]*"])); +Eval: group(NGdata,2,2); + +Rule "NGdata: liczba cyframi rzymskimi + 'wiek'" + +Match: [orth~"[IVCMLX][IVCMLX]*[-–]?[IVCMLX]*" && pos!~"Conj|Noun"] + [base~"wiek"]; +Eval: group(NGdata,2,2); + + +################## GODZINY + +Rule "NGgodz: godzina + liczba cyframi + kropka + liczba cyframi (lub zakres liczbowy)" + +Match: [base~"godzina"] ns? + ([orth~"[0-1][0-9]"] | [orth~"2[0-3]"] | [orth~"[1-9]"]) (ns [orth~":|\."] ns? ([orth~"[0-5][0-9]"] | [orth~"[0-5][0-9][-–][1-9][0-9]?"] ns [orth~"\.|:"] ns [orth~"[0-5][0-9]"]))?; +Eval: group(NGgodz,1,1); + +Rule "NGgodz: liczba cyframi + dwukropek / kropka + liczba cyframi (lub zakres liczbowy)" + +Match: ([orth~"[0-1][0-9]"] | [orth~"2[0-3]"] | [orth~"[1-9]"]) ns [orth~":|\."] ns? ([orth~"[0-5][0-9]"] | [orth~"[0-5][0-9][-–][1-9][0-9]?"] ns [orth~"\.|:"] ns [orth~"[0-5][0-9]"]); +Eval: group(NGgodz,1,1); + +################# POZOSTAŁE GRUPY + +################# GRUPY LICZEBNIKOWE + +Rule "NGl: czas trzyelementowy (np. godzina:minuta:sekunda)" + +Match: [orth~"[0-9][0-9]*"] ns [orth~":|\."] ns [orth~"[0-9][0-9]*"] ns [orth~":|,"] ns [orth~"[0-9][0-9]*"]; +Eval: group(NGl,1,1); + +Rule "NGl: wyniki sportowe i przypisy oxfordzkie (x:y): liczba cyframi + dwukropek + liczba cyframi" + +Match: [orth~"[0-9][0-9]*"] ns [orth~":"] ns? [orth~"[0-9][0-9]*[a-z]?"]; +Eval: group(NGl,1,1); + +Rule "NGl: Adj + Num (zgoda) + Noun (rząd)" #te pięć kobiet + +Match: [pos~"Adj" && case!~"gen" && base!~"który"] + $qub_przy_num? + [pos~"Num|Numcol"] + [pos~"Noun" && case~"gen"]; +Eval: unify(number case gender,1,2); + unify(gender,1,3,4); + group(NGl,3,4); + + +Rule "NGl: (Adj) + Num + (Adj) + Noun + (Adj) (rząd)" + +Match: [pos~"Adj" && case~"gen"]? + $qub_przy_num? + [pos~"Num|Numcol" && case!~"gen"] + [pos~"Adj" && case~"gen"]? + [pos~"Noun" && case~"gen"] + [pos~"Adj" && case~"gen"]?; +Eval: unify(gender,1,3,4,5,6); + group(NGl,3,5); + + +Rule "NGl: (Qub|Adv) + (Adj) + Num + (n*Adj) + Noun + (Adj) (zgoda)" + +Match: ($qub_przy_adj | $qub_przy_num | $adv_przy_num)? + [pos~"Adj"]? + [pos~"Num|Numcol"] + ([pos~"Adj|Pant|Ppas" && base!~"pozbawić"])? + ((ns [orth~","])? ([base~"lecz|ale|choć|chociaż|bo|czyli"] | [base~"a"]? [base~"mimo to"])? [pos~"Adj|Pant|Ppas" && base!~"który|pozbawić"])* + [pos~"Noun|Ppron12|Ppron3"] + [pos~"Adj"]?; +Eval: unify(number case gender,2,3,4,6,7); + group(NGl,3,6); + + +Rule "NGl: Num + Noun (procent)" + +Match: $qub_przy_adj? + [pos~"Num"] + [pos~"Noun" && orth~"procent"]; +Eval: group(NGl,2,3); + + +Rule "NGl: Adj + liczba cyframi + Noun (rząd)" #te 5 kobiet + +Left: ([pos!~"Noun"] | [pos~"Noun" && case~"gen"] | sb); #to może być za ostry warunek, ale żeby temu zaradzić, trzeba by rozmnożyć reguły (różne przypadki osobno) +Match: [pos~"Adj" && case!~"gen"] + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] + [pos~"Noun" && case~"gen"]; +Eval: unify(number gender,2,4); + group(NGl,3,4); + +Rule "NGl: (Qub) + (Adj) + liczba cyframi + (Adj) + Noun + (Adj) (zgoda + rząd)" + +Match: ($qub_przy_num | [pos~"Brev" && base~"około" && brev_pos~"QUB"])? + [pos~"Adj"]? + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] + [pos~"Adj"]? + [pos~"Noun"] + [pos~"Adj"]; +Eval: unify(number case gender,2,4,5,6); + group(NGl,3,5); + + +Rule "NGl: (Qub) + (Adj) + liczba cyframi + (Adj) + Noun + (Adj) (zgoda + rząd)" + +Match: ($qub_przy_num | [pos~"Brev" && base~"około" && brev_pos~"QUB"])? + [pos~"Adj"]? + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] + [pos~"Adj"]? + [pos~"Noun"]; +Eval: unify(number case gender,2,4,5); + group(NGl,3,5); + + +Rule "NGl: Adj + liczba cyframi + Noun (procent)" + +Match: [pos~"Adj"] + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] + [pos~"Noun" && orth~"procent"]; +Eval: group(NGl,2,3); + +Rule "NGl: (Adv|Qub) + Num|liczba cyframi + Brev" + +Match: ($qub_przy_num | $adv_przy_num)? + ([pos~"Num|Numcol"] | [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"]) + [pos~"Brev|Brev-se" && brev_pos~~"NOUN|NG" && orth!~"§|im\."]; +Eval: group(NGl,2,3); + +Rule "NGl: Noun + Num (rząd)" + +Match: [pos~"Noun" && case~"gen"] + [pos~"Num|Numcol"]; +Right: ([pos~"Noun|Adj" && case!~"gen"] | [pos!~"Noun|Adj"] | se | ns); +Eval: group(NGl,2,1); + +Rule "NGl: Noun + Num (zgoda)" + +Match: [pos~"Noun"] + [pos~"Num|Numcol"]; +Right: ([pos~"Noun|Adj" && case!~"gen"] | [pos!~"Noun|Adj"] | se | ns); +Eval: unify(number case gender,1,2); + group(NGl,2,1); + + +Rule "NGl: Adj + Noun + liczba cyframi (rząd)" #tych przebiegów 10 + +Match: [pos~"Adj" && case~"gen"] + [pos~"Noun" && case~"gen"] + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"]; +Right: ([pos~"Noun|Adj" && case!~"gen"] | [pos!~"Noun|Adj"] | se | ns); +Eval: unify(number gender,1,2); + group(NGl,3,2); + + +Rule "NGl: zakresy liczbowe (cyframi), trójelementowe" + +Match: [orth~"[1-9][0-9]*"] ns? [orth~"-|–"] ns? [orth~"[1-9][0-9]*"]; +Eval: group(NGl,1,1); + + +############################### GRUPY RZECZOWNIKOWO-RZECZOWNIKOWE + + +Rule "NGs: (Adj) + Noun(osoba) + (Noun[osoba]) + Noun + (Noun) (tytuł + imię + nazwisko)" + +Match: [pos~"Adj"]? + ($osoba | $tytul) + [pos~"Adj"]? + ($osoba | $tytul)? + ([pos~"Noun" && base~"[A-ZĆŁŚŹŻÓ].*" && orth!~"Skarbu|Rosji|Francji"] | [pos~"Noun" && base~"sprawozdawca"]) + [pos~"Noun|Adj" && orth~"[A-ZĆŁŚŹŻÓ].*"]*; +Eval: unify(number case,1,2,3,4,5,6); + group(NGs,2,2); +#łapie się ministra Skarbu Państwa, ale dużo grup niezagnieżdżonych się nie złapie, jeśli wyeliminuje się dopełniacze +#dziwnostka: dlaczego na tę regułę i regułę niżej łapią się dwuczłonowe nazwiska z łącznikami? + +Rule "NGs: (Adj) + Noun + (Adj) + n*Noun" + +Match: $tytul? + [pos~"Adj" && case!~"gen"]? + [pos~"Noun" && case!~"gen"] + [pos~"Adj" && case!~"gen"]? + [pos~"Noun" && case!~"gen"]+; +Eval: unify(number case,2,3,4,5); + group(NGs,3,3); +#nie łapią się dopełniacze, można na wszelki wypadek zrezygnować jeszcze z mianowników + + +Rule "NGs: nazwiska w dopełniaczu" + +Match: [pos~"Adj" && case~"gen"]? + [pos~"Noun" && base~"[A-ZĆŁŚŹŻÓ].*" && case~"gen"] + [pos~"Noun" && base~"[A-ZĆŁŚŹŻÓ].*" && case~"gen"]; +Eval: unify(number,1,2,3); + group(NGs,2,2); + + +Rule "NGs: Noun + Noun (chodzi o dopełniacze)" + +Match: $osoba + $osoba; +Eval: group(NGs,1,1); + + + +################################# GRUPY RZECZOWNIKOWO-PRZYMIOTNIKOWE + +Rule "NGa: przymiotnik porządkowy rzymskimi + (Adj) + Noun + (Adj)" + +Match: [orth~"[IVCMLX][IVCMLX]*[-–]?[IVCMLX]*" && pos!~"Conj|Noun"] + [pos~"Adj"]? + [pos~"Noun"] + [pos~"Adj"]?; +Eval: unify(number case gender,2,3,4); + group(NGa,3,3); + +Rule "NGa: przymiotnik porządkowy rzymskimi + wiek" + +Match: [orth~"[IVCMLX][IVCMLX]*[-–]?[IVCMLX]*"] + [orth~"w\."]; +Eval: group(NGa,2,2); +#próbowałam dodać ewentualne "p.n.e.", ale nie działa, bo na ms to skróty od 'piętro', 'nowy' i wykrzyknik 'e' + +Rule "NGa: Noun + (Noun) + (Noun) + przymiotnik porządkowy rzymskimi" + +Match: [pos~"Noun"] + [pos~"Noun" && orth~"[A-ZŹĆŻÓŚ].*"]? + [pos~"Noun" && orth~"[A-ZŹĆŻÓŚ].*"]? + [orth~"[IVCMLX][IVCMLX]*[-–]?[IVCMLX]*" && pos!~"Conj|Noun"]; +Eval: unify(number case gender,1,2,3); + group(NGa,1,1); + + +Rule "NGa: paragraf/artykuł + numer cyframi" + +Match: [base~"artykuł|§|$"] ns? [orth~"[0-9][0-9]*[-–]?[0-9]?[0-9]*"]; +Eval: group(NGa,1,1); +### 'artykuł' się nie łapie, bo 'art' to ign na ms + +Rule "NGa: msza św." + +Match: [base~"msza|komunia|pismo" && pos~"Noun"] [base~"święty" && pos~"Brev"]; +Eval: group(NGa,1,1); + +Rule "NGa: jak + Adj (sup) + Noun" + +Match: [base~"jak" && pos~"Adv"] + [pos~"Adj" && degree~"sup"] + [pos~"Noun"]; +Eval: unify(number case gender,2,3); + group(NGa,3,3); + +Rule "NGx: zaimek + Adj gen" + +Match: [base~"coś|nic|co|cóż"] ([pos~"Adj" && case~"gen"] | [orth~"więcej"]); +Eval: group(NGx,1,1); + +Rule "NGa: (Adj) + Ppron3 + Noun" + +Match: [pos~"Adj"]? + [pos~"Ppron3" && case~"gen" && post-prepositionality~"npraep"] + [pos~"Adj"]? + [pos~"Noun"] + [pos~"Adj"]?; +Eval: group(NGa,4,4); +# UWAGA! Na tę regułę i regułę niżej łapią się też (błędnie) dopełniacze przy gerundiach i rzeczownikach wymagających dopełniacza, np. "ich zamrożenie", "ich kupno" - dwuznaczne konstrukcje, błędy nie do wyeliminowania, jeśli zostaniemy przy tej regule i jeśli na ms nie odróżnimy ppron3 od równokształtnego adj + +Rule "NGa: Noun + Ppron3" + +Match: [pos~"Noun"] + [pos~"Ppron3" && case~"gen"]; +Eval: group(NGa,1,1); + + +################### Adj na początku + +# nie łapią się, choć są w materiale: zasadniczo, często, trudno, wciąż, niegdyś, szeroko, kiedyś, późno, mocno, głęboko, nagle, wspaniale, jak (w pytaniach), niekiedy - UWAGA - PROBLEMATYCZNE; większość to tak naprawdę imiesłowy, a nie adj (błędy automatycznej anotacji) +Rule "NGa: Adv + Adj + (n*((Adv) + Adj)) + Noun + (Adj)" + +Match: $adv_przy_adj + [pos~"Adj|Pact" && base!~"pozbawić|który"] + [pos~"Adv" && base!~"gdy|gdzie|kiedy|rano|jak"]? + ((ns [orth~","])? ([base~"lecz|ale|choć|chociaż|bo|czyli"] | [base~"a"]? [base~"mimo to"])? [pos~"Adv" && base!~"gdy|gdzie|kiedy|rano|jak"]? [pos~"Adj|Pact|Ppas" && base!~"który|pozbawić"])* + [pos~"Noun|Ppron12|Ppron3"] + [pos~"Adj"]?; +Eval: unify(number case gender,2,5,6); + group(NGa,5,5); + +Rule "NGa: (Adv) + Ppas (Nom) + Noun + (Adj)" + +Left: ([pos~"Verbfin" && base!~"być|zostać"] | [pos!~"Verbfin"] | sb); +Match: $qub_przy_adj? + [pos~"Adv" && base!~"jak|gdzie|kiedy|gdy|skąd|dokąd|dlaczego|dlatego|tymczasem|odtąd"]? + [pos~"Ppas" && case~"nom"] + $qub_przy_adj? + [pos~"Noun" && case~"nom"] + [pos~"Adj" && case~"nom"]?; +Eval: unify(number gender,4,6,7); + group(NGa,6,6); + +Rule "NGa: (Adv) + Ppas (nNom) + Noun + (Adj)" + +Match: $qub_przy_adj? + [pos~"Adv" && base!~"jak|gdzie|kiedy|gdy|skąd|dokąd|dlaczego|dlatego|tymczasem"]? + [pos~"Ppas" && case!~"nom"] + $qub_przy_adj? + [pos~"Adj" && case!~"nom"]? + [pos~"Noun" && case!~"nom"] + [pos~"Adj" && case!~"nom"]?; +Eval: unify(number gender,3,5,6,7); + group(NGa,6,6); + + +##"pozbawiony" wymaga zagnieżdżonego dopełniacza (chyba że dziwny przestawny szyk); oczywiście jest tego więcej - tu wprowadzone "awaryjnie"; +##z krótkiego przeglądu NKJP wynika, że wypadki, kiedy będą się łąpać przypadkowo niechciane zagnieżdżające Ppas, są raczej wyjątkowe +##IMHO więcej szkody z usunięcia Ppas niż z pozostawienia +Rule "NGa: (Qub) + Adj + (n*((Adv) + Adj)) + Noun + (Adj)" + +Match: $qub_przy_adj? + [pos~"Adj|Pact" && base!~"pozbawić|który"] + $qub_przy_adj? + [pos~"Adv" && base!~"gdy|gdzie|kiedy|rano|jak"]? + ((ns [orth~","])? ([base~"lecz|ale|choć|chociaż|bo|czyli"] | [base~"a"]? [base~"mimo to"])? $qub_przy_adj? [pos~"Adv" && base!~"gdy|gdzie|kiedy|rano|jak"]? [pos~"Adj|Pact|Ppas" && base!~"który|pozbawić"])+ + [pos~"Noun|Ppron12|Ppron3"] + [pos~"Adj" && base!~"który"]?; +Eval: unify(number case gender,2,6,7); + group(NGa,6,6); + + +Rule "NGa: (Qub) + Adj + (Qub) + (Adv) + Noun + (Adj)" + +Match: $qub_przy_adj? + [pos~"Adj|Pact" && base!~"pozbawić|który"] + $qub_przy_adj? + [pos~"Adv" && base!~"gdy|gdzie|kiedy|rano|jak"]? + [pos~"Noun|Ppron12|Ppron3"] + [pos~"Adj" && base!~"który"]?; +Eval: unify(number case gender,2,5,6); + group(NGa,5,5); + + +Rule "NGa: Adj + Noun" + +Match: [pos~"Adj|Pact" && base!~"pozbawić|który"] + [pos~"Noun|Ppron12|Ppron3"]; +Eval: unify(number case gender,1,2); + group(NGa,2,2); +################## ta reguła zrobiona interwencyjnie, bo nie łapało się "wszelkie siatki" w "rozpracowujących wszelkie siatki"; może trzeba tę skomplikowaną regułę rozbić na mniejsze + +################## Noun na początku + + + +Rule "NGa: Noun + (Adv) + n*Adj Gen" + +Match: [pos~"Noun|Ppron12|Ppron3" && base!~"co" && case~"gen"] [pos~"Adv"]? [pos~"Adj|Pact|Ppas" && case~"gen"]+; +#Right: ([pos!~"Noun"] | [pos~"Noun" && case!~"gen"] | ns | se); +Eval: unify(number case gender,1,3); + group(NGa,1,1); +#Ograniczenie prawego kontekstu jest za mocne: trzeba by rozmnożyć regułę: nie może być zgody między Adj a rzeczownikiem w prawym kontekście + +Rule "NGa: Noun + (Adv) + n*Adj nGen nNom (po przecinkach)" + +Match: [pos~"Noun|Ppron12|Ppron3" && base!~"co" && case!~"gen"] + [pos~"Adv"]? + [pos~"Adj|Pact|Ppas" && case!~"gen|nom" && base!~"który"] + (ns [orth~","] [pos~"Adj|Pact|Ppas" && base!~"który|pozbawić"])+; +Eval: unify(number case gender,1,3); + group(NGa,1,1); + +Rule "NGa: Noun + (Adv) + n*Adj nGen nNom" + +Match: [pos~"Noun|Ppron12|Ppron3" && base!~"co" && case!~"gen"] [pos~"Adv"]? [pos~"Adj|Pact|Ppas" && case!~"gen|nom" && base!~"który"]+; +Eval: unify(number case gender,1,3); + group(NGa,1,1); + +Rule "NGa: Noun + (Adv) + n*Adj Nom" + +Left: ([pos~"Verbfin" && base!~"być|zostać"] | [pos!~"Verbfin"] | sb); +Match: [pos~"Noun|Ppron12|Ppron3" && case~"nom"] + [pos~"Adv"]? + [pos~"Adj|Pact|Ppas" && case~"nom"]+; +Right: ([pos~"Verbfin" && base!~"być|zostać"] | [pos!~"Verbfin"] | ns | se); +Eval: unify(number gender,2,4); + group(NGa,2,2); + +Rule "NGa w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NGa" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NGa,3,3); + +###################################### GRUPY PRZYMIOTNIKOWE + +Rule "AdjGl: Num + Adj (rząd)" + +Match: $qub_przy_num? + [pos~"Num|Numcol"] + [pos~"Adj" && case~"gen"]; +Eval: group(AdjGl,2,3); + +Rule "AdjGl: Num + Adj (zgoda)" + +Match: $qub_przy_num? + [pos~"Num|Numcol"] + [pos~"Adj"]; +Eval: unify(number case gender,2,3); + group(AdjGl,2,3); + +Rule "AdjGl: liczba cyframi + Adj" + +Match: [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] + [pos~"Adj"]; +Eval: group(AdjGl,1,2); + +Rule "Adj + Adj" + +Match: [pos~"Adj"] + [pos~"Adj" && base!~"który"]; +Eval: unify(number case gender,1,2); + group(AdjG,1,1); + +Rule "Adv + Adj" + +Match: $adv_przy_adj + [pos~"Adj|Ppas"]; +Eval: group(AdjG,2,2); + +##################################### GRUPY ZE SKRÓTAMI (nie wychwytywane wyżej) + +Rule "NGb: Brev(NOUN) + Noun" + +Match: [pos~"Brev" && brev_pos~~"NOUN" && base!~"imienia|ulica|plac|aleja"] + [pos~"Noun" && base~"[A-ZĆŹŻŚÓ].*"]+; +Eval: group(NGb,1,1); + +Rule "NGb: Brev(ADJ) + Noun" + +Match: [pos~"Brev" && brev_pos~~"ADJ" && base!~"imienia|ulica|plac|aleja"] + [pos~"Noun" && base~"[A-ZĆŹŻŚÓ].*"] + [pos~"Noun" && base~"[A-ZĆŹŻŚÓ].*"]*; +Eval: group(NGb,2,2); + +Rule "Noun + Brev (NOUN|ADJ)" + +Match: [pos~"Noun"] + [pos~"Brev|Brev-se" && brev_pos~"NOUN|ADJ" && base!~"imienia|ulica|plac|aleja"]; +Eval: group(NGb,1,1); + + +Rule "NGb: Brev + liczba cyframi" + +Match: [pos~~"Brev" && brev_pos~"NOUN"] ns? + [orth~"[1-9][0-9]*[-–]?[1-9]?[0-9]*"] (ns [orth~"-"] ns [orth~"[0-9]+"])?; +Eval: group(NGb,1,1); + +############################################ POJEDYNCZE WYRAZY + +Rule "(Qub) + Noun" + +Match: [pos~"Qub" && base~"prawie|ponad|dopiero|niby|byle|niemal|nie|tylko|jeszcze|już|minimum|ani|i|to"]? + [pos~"Noun|Ppron12|Ppron3|Siebie"]; +Eval: group(NG,2,2); + +Rule "(Qub) + Num" + +Match: ($qub_przy_num | [pos~"Brev" && brev_pos~QUB && base~"około"])? + [pos~"Num"]; +Eval: group(NumG,2,2); + + +Rule "(Qub) + Adj" + +Match: $qub_przy_adj? + [pos~"Adj|Ppas|Pact"]; +Eval: group(AdjG,2,2); + +Rule "Brev" + +Match: [pos~"Brev" && brev_pos~"NOUN"]; +Eval: group(NG,1,1); + +Rule "grupa w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NG" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG,3,3); + +############################### GRUPY ZAGNIEŻDŻONE + +######################################## ADRESY + +Rule "NGadres: ulica + NG(gen) +(numer)" + +Match: [type="NG" && synh=[base~"ulica|plac|aleja"]] + [type="NG" && synh=[case~"gen" && base~"[A-ZŁÓŻŹĆ].*"]] + ([orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?[A-ZŁŚŻ]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])?)?; +Eval: group(NGadres,1,1); + + +Rule "NGadres: NGadres + numer" + +Match: [type="NGadres"] + [orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?[A-ZŁŚŻ]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])?; +Eval: group(NGadres,1,1); + +###################################### GRUPY NG2 + +Rule "NG2: NG(gen) + NG" + +Match: [type="NG|NGa" && synh=[case~"gen" && base~"pan|pani|państwo|to|podziw|nauczyciel|typ|rodzaj|wielkość|sława|wysokość|strumień|klasa|próba|jakość|słowo|wspomnienie|Boryn.*|iskra"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]]; +Eval: group(NG2,2,2); + + +Rule "NG2: NG + NG(gen) + [NG(nom|gen|dat|inst)]" + +Match: [type=".*" && synh=[base~"odbywać|ozdabiać|wysycić|przywracać|zastąpić|dociążyć|wydawać|udzielić|udzielać|udostępniać|stawić|przekazać|zapewnić|utrudniać|oduczać|zafascynowanie|objąć|dociążyć|nadawanie"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"gen" && base!~"co|siebie"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + +Rule "NG2: [NG] + NG(gen) + NG(dat) | NG + NG(dat) + [NG(gen)]" + +Match: [type=".*" && synh=[base~"przybliżenie|uchylić|przekazać|podać|wręczyć|nieść|przesłać|darować|darowanie"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"dat" && base!~"co|siebie"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + +Rule "NG2: [NG] + NG(gen) + NG(inst) | NG + NG(inst) + [NG(gen)]" + +Match: [type=".*" && synh=[base~"pomalować"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"inst" && base!~"co|siebie"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + + +Rule "NG2: NG + NG(gen) nie przed NG(gen) i nie przed koordynacją" + +Left: ([synh=[base!~"mistrzostwo|rekord|ułatwienie|order|puchar"]] | sb | [pos~".*"]); +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie|to"]] + ([type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"gen" && base!~"co|on|ja|ty|my|wy|siebie|nic"]] | [type="NGadres" && synh=[pos~"Brev"]]); +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"gen"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG2,2,2); + + +Rule "NG2: NG + NG(gen) nie przed NG(gen) i nie przed koordynacją (2)" + +Left: ([synh=[base!~"mistrzostwo|rekord|ułatwienie|order|puchar"]] | sb | [pos~".*"]); +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie|to"]] + ([type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"gen" && base!~"co|on|ja|ty|my|wy|siebie|nic"]] | [type="NGadres" && synh=[pos~"Brev"]]); +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"gen"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG2,2,2); + + +Rule "NG2: NG + NG(dat)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base~"kwota|uświadomić|służba|czytanie|psycholog|zapobieżenie|przypomnienie|pomoc|wyobrażenie|przekazać|przeciwstawić się|radzić|zbiorowość|sprzeniewierzać się|zapobieganie|ofiara|konferencja|wierność|udzielić|czynić|zawód|umożliwić|chwała|raj|poddany"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"dat" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"dat"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"dat"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG2,1,1); + + +Rule "NG2: NG(Pact) + NG(acc)" + +Match: [type="AdjG|NGa" && synh=[base!~"który|jaki|co|siebie"]] + [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"acc" && base!~"co|siebie"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"acc"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"acc"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG2,1,1); + + +Rule "NG2: NG + NG(inst)" + +Match: [type="NG|NGa" && synh=[base!~"co|on|ja|ty|my|wy|siebie|czas"]] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"inst" && base!~"co|ja|ty|my|wy|on|siebie|czas"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"inst"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"inst"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG2,1,1); + + +Rule "NG2: NG + NGl z cyframi" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGl"]; +Eval: group(NG2,1,1); + +############################################# GRUPY SKOORDYNOWANE NG po NG2 + +Rule "NGk: NG(gen) + NG(gen)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"gen"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"gen"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(dat) + NG(dat)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"dat"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"dat"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(acc) + NG(acc)" + +Left: [type="AdjG|NGa"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"acc"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"acc"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(inst) + NG(inst)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"inst"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb" && synh=[case~"inst"]])+; +Eval: group(NGk,3,3); + +############################################# GRUPY NG2 Z GRUPAMI SKOORDYNOWANYMI + + +Rule "NG2: NG + NGk(gen) + [NG(nom|gen|dat|inst)]" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base~"odbywać|ozdabiać|wysycić|przywracać|zastąpić|dociążyć|wydawać|udzielić|udzielać|udostępniać|stawić|przekazać|zapewnić|utrudniać|oduczać|zafascynowanie|objąć|dociążyć|nadawanie"]] + [type="NGk" && synh=[case~"gen" && base!~"co|siebie"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + +Rule "NG2: [NG] + NG(gen) + NGk(dat) | NG + NG(dat) + [NG(gen)]" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base~"przybliżenie|uchylić|przekazać|podać|wręczyć|nieść|przesłać|darować|darowanie"]] + [type="NGk" && synh=[case~"dat" && base!~"co|siebie"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + +Rule "NG2: [NG] + NG(gen) + NGk(inst) | NG + NGk(inst) + [NG(gen)]" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base~"pomalować"]] + [type="NGk" && synh=[case~"inst"]]; +Right: [type=".*"]; +Eval: group(NG2,1,1); + + +Rule "NG2: NG + NGk(gen)" + +Left: ([synh=[base!~"mistrzostwo|rekord|ułatwienie|order|puchar"]] | sb | [pos~".*"]); +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"gen"]]; +Eval: group(NG2,2,2); + + +Rule "NG2: NG + NGk(gen)(2)" + +Left: ([synh=[base!~"mistrzostwo|rekord|ułatwienie|order|puchar"]] | sb | [pos~".*"]); +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"gen"]]; +Eval: group(NG2,2,2); + + +Rule "NG2: NG + NGk(dat)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base!~"obszar|rozdział|błogosławieństwo|ulegać|scena"]] + [type="NGk" && synh=[case~"dat"]]; +Eval: group(NG2,1,1); + + +Rule "NG2: NG(Pact) + NGk(acc)" + +Match: [type="AdjG|NGa" && synh=[base~"koić|mieć|usuwać|przyjmować|zaburzać|organ|tłumaczyć|obejmować|bariera|dotyczyć"]] + [type="NGk" && synh=[case~"acc"]]; +Eval: group(NG2,1,1); + + +Rule "NG2: NG + NGk(inst)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb" && synh=[base~"handlować|kosz"]] + [type="NGk" && synh=[case~"inst"]]; +Eval: group(NG2,1,1); + + +################################### NG2 W CUDZYSŁOWACH + +Rule "NG2 w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NG2" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG2,3,3); + +######################################################### GRUPY NG3 + + +Rule "NG3: NG2 + NG (gen)" + +Match: [type="NG2"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"gen" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"gen"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG3,1,1); + +Rule "NG3: NG2 + NG(dat)" + +Match: [type="NG2"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"dat" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"dat"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"dat"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG3,1,1); + +Rule "NG3: NG2 + NG(inst)" + +Match: [type="NG2"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"inst" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Right: (se | (ns [orth~","] ([pos!~"Conj"] | [type=".*" && synh=[case!~"inst"]])) | (ns [orth!~","]) | ([pos~"Conj"] [type=".*" && synh=[case!~"inst"]]) | [pos!~"Conj"] | [type=".*" && synh=[case!~"gen"]]); +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NG2(gen)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NG2" && synh=[case~"gen"]]; +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NG2(acc)" + +Match: [type="NGa|AdjG" && synh=[base!~"który|jaki|co|siebie"]] + [type="NG2" && synh=[case~"acc"]]; +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NG2(inst)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[base~"uczeń|zarządzać|azbest|sterować|nauczać|manipulować|uczulenie|osoba|środowisko|chodzić|twarz|objąć|badanie|wstrząs|żonglerka|zainteresowanie|tydzień|napięcie|odkaszlnąć|sygnał|istota|sztych"]] + [type="NG2" && synh=[case~"inst"]]; +Eval: group(NG3,1,1); + +Rule "NG3: NG + NG(gen) + NG(gen)" + +Match: [type="NG" && synh=[base~"mistrzostwo|order|rekord|puchar"]] + [type="NG" && synh=[case~"gen"]] + [type="NG|NGa" && synh=[case~"gen"]]; +Eval: group(NG3,1,1); + +############################################# GRUPY SKOORDYNOWANE NG po NG3 + +Rule "NGk: NG(2)(gen) + NG(2)(gen)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"gen"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"gen"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(2)(dat) + NG(2)(dat)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"dat"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"dat"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(2)(acc) + NG(2)(acc)" + +Left: [type="AdjG|NGa"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"acc"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"acc"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(2)(inst) + NG(2)(inst)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"inst"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"inst"]])+; +Eval: group(NGk,3,3); + +######################################################## GRUPY NG3 Z GRUPAMI SKOORDYNOWANYMI + + +Rule "NG3: NGk + NG (gen)" + +Match: [type="NGk"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"gen" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Eval: group(NG3,1,1); + +Rule "NG3: NGk + NG(dat)" + +Match: [type="NGk"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"dat" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Eval: group(NG3,1,1); + +Rule "NG3: NGk + NG(inst)" + +Match: [type="NGk"] + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"inst" && base!~"co|on|ja|ty|my|wy|siebie"]]; +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NGk(gen)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"gen"]]; +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NGk(acc)" + +Match: [type="NGa|AdjG" && synh=[base!~"który|jaki|co|siebie"]] + [type="NGk" && synh=[case~"acc"]]; +Eval: group(NG3,1,1); + + +Rule "NG3: NG + NGk(inst)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"inst"]]; +Eval: group(NG3,1,1); + +################################### NG3 W CUDZYSŁOWACH + +Rule "NG3 w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NG3" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG3,3,3); + +########################################################## GRUPY NG4 + +Rule "NG4: NG + NG3(gen)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NG3" && synh=[case~"gen"]]; +Eval: group(NG4,1,1); + +Rule "NG4: NG + NG3(dat)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NG3" && synh=[case~"dat"]]; +Eval: group(NG4,1,1); + + +Rule "NG4: AdjG + NG3(acc)" + +Match: [type="NGa|AdjG" && synh=[base!~"który|jaki|co|siebie"]] + [type="NG3" && synh=[case~"acc"]]; +Eval: group(NG4,1,1); + +Rule "NG4: NG + NG3(inst)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NG3" && synh=[case~"inst"]]; +Eval: group(NG4,1,1); + + +############################################# GRUPY SKOORDYNOWANE NG po NG4 + +Rule "NGk: NG(3)(gen) + NG(3)(gen)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[case~"gen"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[case~"gen"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(3)(dat) + NG(3)(dat)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[case~"dat"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2" && synh=[case~"dat"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(3)(acc) + NG(3)(acc)" + +Left: [type="AdjG|NGa"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[case~"acc"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[case~"acc"]])+; +Eval: group(NGk,3,3); + +Rule "NGk: NG(3)(inst) + NG(3)(inst)" + +Left: [type=".*"] [pos~"Conj"]?; +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3" && synh=[case~"inst"]] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3" && synh=[case~"inst"]])+; +Eval: group(NGk,3,3); + + +########################################################## GRUPY NG4 Z GRUPAMI SKOORDYNOWANYMI + +Rule "NG4: NG + NGk(gen)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"gen"]]; +Eval: group(NG4,1,1); + +Rule "NG4: NG + NGk(dat)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"dat"]]; +Eval: group(NG4,1,1); + + +Rule "NG4: NG + NGk(acc)" + +Match: [type="NGa|AdjG" && synh=[base!~"który|jaki|co|siebie"]] + [type="NGk" && synh=[case~"acc"]]; +Eval: group(NG4,1,1); + +Rule "NG4: NG + NGk(inst)" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NGk" && synh=[case~"inst"]]; +Eval: group(NG4,1,1); + +############################################ NG4 W CUDZYSŁOWIE + +Rule "NG4 w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NG4" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG4,3,3); + +####################################################### GRUPY NG5 + +Rule "NG5: NG + NG4" + +Match: [type="NG|NGadres|NGgodz|NGl|NGs|NGa|NGb|NG2|NG3|NG4" && synh=[base!~"co|on|ja|ty|my|wy|siebie"]] + [type="NG4" && synh=[case~"gen"]]; +Eval: group(NG5,1,1); + +Rule "NG5 w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NG5" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NG5,3,3); + +#################################################################################### KOORDYNACJE + +Rule "NGk: imię + imię + nazwisko(pl)" + +Match: [type="NGk" && synh=[base~"[A-ZŁŚŹŻĆÓ].*"]] + [type="NG" && synh=[base~"[A-ZŁŚŹŻĆÓ].*" && number~"pl"]]; +Eval: unify(case,1,2); + group(NGk,1,1); + +Rule "NGk: NG + NG" + +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5"] + (([base!~"ale|lecz|więc" && pos~"Conj"] | (ns? [orth~",|\+|/|:"] ns?) | (ns [orth~","] [base!~"ale|lecz|więc" && pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5"])* + ([base!~"ale|lecz|więc" && pos~"Conj"] | (ns? [orth~",|\+|/|:"] ns?) | (ns [orth~","] [base!~"ale|lecz|więc" && pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5" && synh=[base!~"kto|co"]]; +Eval: unify(case,1,4); + group(NGk,1,1); + +Rule "NGk: coś jakieś i czegoś" + +Match: [type="NGa"] + [base~"i"] + [type="NGa" && synh=[case~"gen"]]; +Eval: group(NGk,1,1); + +########################### SKOORDYNOWANE DATY + +Rule "Liczba + spójnik + NGdata" + +Match: [orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])? + [base~"i" && pos~"Conj"] + [type="NGdata"]; +Eval: group(NGkdata,1,1); + +Rule "NG + spójnik + NGdata" + +Match: [type="NG" && synh=[base~"styczeń|luty|marzec|kwiecień|maj|czerwiec|lipiec|sierpień|wrzesień|październik|listopad|grudzień"]] + [base~"i" && pos~"Conj"] + [type="NGdata"]; +Eval: unify(case,1,3); + group(NGkdata,1,1); + +########################## SKOORDYNOWANE LICZEBNIKI + +Rule "Liczba + spójnik + NGl" + +Match: [orth~"[0-9][0-9]?[-–]?[0-9]?[0-9]?"] (ns? [orth~"-"] ns? [orth~"[0-9][0-9]?"])? + [base~"i|lub" && pos~"Conj"] + [type="NGl"]; +Eval: group(NGkl,1,4); + +Rule "NGk w cudzysłowie" + +Match: [orth~"„|“|”|\"|'|»"] ns? + [type="NGk" && synh=[orth~"[a-zćłśźżó].*"]] ns? + [orth~"”|’’|\"|'|“|«"]; +Eval: group(NGk,3,3); + + + +######################################################## ZDANIA WZGLĘDNE + +######################## ZDANIA WZGLĘDNE + +Rule "NG + który + Verbfin" + +Match: [type=".*"] ns [orth~","] [pos~"Prep"]? + [type="AdjG" && synh=[base~"który|jaki"]] + (ns | [] | [synh=[]])* + [pos~"Verbfin"] + ([pos!~"Verbfin"] | [synh=[]])*; +Right: ns [orth~",|\."]; +Eval: #unify(number gender,1,4); + group(NGkg,1,1); + +Rule "NG + kto|co + Verbfin" + +Match: [synh=[base~"ten|to"]] ns [orth~","] [pos~"Prep"]? + [synh=[base~"kto|co"]] + (ns | [] | [synh=[]])* + [pos~"Verbfin"] + ([pos!~"Verbfin"] | [synh=[]])*; +Right: ns [orth~",|\."]; +Eval: #unify(number gender,1,4); + group(NGkg,1,1); + + +############################################# GRUPY SKOORDYNOWANE ZE ZDANIAMI WZGLĘDNYMI + +Rule "NGk: NG(kg) + NG(kg)" + +Match: [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"] + (([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"])* + ([pos~"Conj"] | (ns? [orth~",|-|–|\+|/|:"] ns?) | (ns [orth~","] [pos~"Conj"])) + [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]; +Eval: unify(case,1,4); + group(NGk,1,1); + + +########################################################## +############################################ reguly z NKJP + +###########GRUPY SKŁADNIOWE + + +Rule "PrepNGb: Prep + dol. rz. + nazwa (Noun)" + +Match: [pos~"Prep"] [base~"dolina" && pos~"Brev"] + [base~"rzeka" && pos~"Brev"] + [base~"[A-ZŻŁÓŚ].*" && pos~"Noun" && gender~"f" && case~~"gen"]; +Eval: group(PrepNG,1,2); + + +Rule "PrepNGb: Prep + jez. + nazwa (Noun)" + +Match: [pos~"Prep"] + [base~"jezioro" && pos~"Brev"] + [pos~"Noun" && case~~"nom" && base~"[A-ZŻŁÓŚ].*"]; +Eval: group(PrepNG,1,2); + + +Rule "PrepNGb: Prep + rz. + nazwa (Adj+Noun)" + +Match: [pos~"Prep"] + [base~"rzeka" && pos~"Brev"] + [base~"[A-ZŻŁÓŚ].*" && pos~"Adj" && gender~"f"] + [base~"[A-ZŻŁÓŚ].*" && pos~"Noun" && gender~"f"]; +Eval: unify(case,1,3,4); + group(PrepNG,1,2); + + +Rule "PrepNGb: Prep + m. + nazwa (Noun)" + +Match: [pos~"Prep"] + [base~"miasto" && pos~"Brev"] + [base~"[A-ZŻŁÓŚ].*" && pos~"Noun" && gender~"m3"]; +Eval: unify(case,1,3); + group(PrepNG,1,2); + + +Rule "PrepNG: Prep + skrót + nazwa" + +Match: [pos~"Prep"] $instytucja + ([pos~"Noun" && case~~"nom" && base~"[A-ZŁŚŻ].*"] | + [pos~"Noun" && case~~"nom" && base~"\"[A-ZŁŚŻ].*"]); +Eval: group(PrepNG,1,2); + + +Rule "PrepNG: Noun + temu" + +Match: ([pos~"Noun"] | [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]) + [base~~"temu" && pos~~"Prep"]; +Eval: unify(case,1,2); + group(PrepNG,2,1); + + +Rule "PrepNG: Prep + którego + NG" + +Match: [pos~~"Prep"] + [base~"który" && case~"gen"] + ([pos~~"Noun"] | [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]); +Eval: unify(case,1,3); + unify(number gender,2,3); + group(PrepNG,1,3); + + +Rule "PrepNG: Prep + NG + którego" + +Match: [pos~~"Prep"] + ([pos~~"Noun"] | [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]) + [base~"który" && case~"gen"]; +Eval: unify(case,1,2); + unify(number gender,2,3); + group(PrepNG,1,2); + + +Rule "PrepNG: Prep + NG" + +Match: [pos~~"Prep"] + ([pos~~"Noun"] | [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]); +Eval: unify(case,1,2); + group(PrepNG,1,2); + + +Rule "PrepNG: Prep + art. + liczba" + +Match: [pos~~"Prep"] [base~"artykuł"] [pos~"Adj" && orth~"[1-9][0-9]*"] + (ns [base~"\."])? [pos~~"Noun" && case~"gen"]; +Eval: group(PrepNG,1,2); + + +Rule "PrepNG: Prep + Adj + Brev(ADJ) + NG" + +Match: [pos~~"Prep"] [pos~~"Adj"] + [pos~"Brev" && brev_pos~~"ADJ|AdjG"] + ([pos~~"Noun"] | [type="NG|NGadres|NGdata|NGgodz|NGl|NGs|NGa|NGb|NumG|NG2|NG3|NG4|NG5|NGkg"]); +Eval: unify(case number gender,2,4); + unify(case,1,4); + group(PrepNG,1,4); + + +Rule "grupa PrepNG w cudzysłowie" + +Match: [orth~"\""] ns [type="PrepNG"] ns [orth~"\""]; +Eval: group(PrepNG,3,3); + + diff --git a/src/main/resources/spejd_config/sample.cfg b/src/main/resources/spejd_config/sample.cfg new file mode 100644 index 0000000..cf19c50 --- /dev/null +++ b/src/main/resources/spejd_config/sample.cfg @@ -0,0 +1,110 @@ +# Config file format for shallow parser + +[ATTR] + +# Attributes and their values + +number = sg pl +case = nom gen dat acc inst loc voc +gender = m1 m2 m3 f n +person = pri sec ter +degree = pos com sup +tense = pres past fut +mood = ind imp cond +reflexivity = refl nrefl +aspect = imperf perf +negation = aff neg +accommodability = congr rec +accentability = akc nakc +post-prepositionality = npraep praep +agglutination = agl nagl +vocalicity = nwok wok +fullstoppedness = pun npun +brev_pos = NOUN ADJ ADV QUB PREP CONJ VERB PPAS PACT XXX NG PrepNG AdjG DisG +cont = discr ndiscr + + +[POS] + +# Part of speech definitions. + +adja = +adjp = +adjc = +conj = +comp = +interp = +pred = +xxx = +adv = [degree] +imps = aspect +inf = aspect +pant = aspect +pcon = aspect +qub = [vocalicity] +prep = case [vocalicity] +siebie = case +subst = number case gender +depr = number case gender +ger = number case gender aspect negation +ppron12 = number case gender person [accentability] +ppron3 = number case gender person accentability post-prepositionality +num = number case gender accommodability +numcol = number case gender accommodability +adj = number case gender degree +pact = number case gender aspect negation +ppas = number case gender aspect negation +winien = number gender aspect +praet = number gender aspect [agglutination] +bedzie = number person aspect +fin = number person aspect +impt = number person aspect +aglt = number person aspect vocalicity +brev = fullstoppedness +burk = +interj = +ign = + +# Syntactic words + +Adjc = +Conj = +Conj1 = [cont] +Conj2 = [cont] +Conj3 = [cont] +Conj4 = [cont] +Comp = +Comp1 = [cont] +Comp2 = [cont] +Interj = +Interp = +Qub = [vocalicity] +Xxx = +Adv = [degree] +Imps = mood aspect reflexivity negation +Inf = aspect reflexivity negation +Pant = aspect reflexivity negation +Pcon = aspect reflexivity negation +Prep = case [vocalicity] +Siebie = case +Noun = number case gender [aspect] [reflexivity] [negation] +Ppron12 = number case gender person [accentability] +Ppron3 = number case gender person accentability post-prepositionality +Num = number case gender accommodability +Numcol = number case gender accommodability +Adj = number case gender degree +Adj-se = number case gender degree +Pact = number case gender aspect reflexivity negation +Ppas = number case gender aspect reflexivity negation +Verbfin = number person tense mood aspect reflexivity negation [gender] +Winien = number person gender tense mood aspect reflexivity negation +Pred = tense mood aspect negation +Brev = fullstoppedness brev_pos +Brev-se = fullstoppedness brev_pos + + +# Named Entities (of sorts): + +liczba = +#waluta = + -- libgit2 0.22.2