What are corpus configuration options?

Corpus configuration options are located in a corpus configuration file (also called as a registry file) and keep basic information about a corpus as name of corpuspath to the vertical file, info on encoding, used attributes etc.

How to open a corpus configuration file with the options?

  1. Open your corpus.
  2. Click Manage corpus in the left menu.
  3. Click Configure corpus in the left menu.
  4. enable Expert mode

Note: information “manatee [number]” indicates from which version of manatee (software used in Sketch Engine for searching in text corpora) the given option is available


name of the corpus; defaults to the corpus config filename


corpus encoding


default LOCALE for attributes (see below). Defaults to standard POSIX locale (C). Can be set using LANGUAGE instead.


language name – it should be capitalized and one of the allowed names, otherwise the system will not be able to automatically detect the right locale and you may experience errors when sorting or regular expression matching of non-ASCII characters.


for corpora of languages that do not have capital letters, e.g. Arabic, Chinese, Japanese, Korean, Nepali, Telugu, Tamil, …
For example, in the case of an Arabic corpus, the registry file should contain the following configuration (it implies that lowercase attributes are not required such as  lc  or  lemma_lc):



indicates whether the language of the corpus is in the right-to-left script (e.g. Arabic)


for parallel corpora only: comma-separated list of aligned corpora. All corpora should have a structure defined in ALIGNSTRUCT (“align” in manatee 2.67 and higher).


[since manatee 2.67]

for parallel corpora only: the name of the mapping structure, i.e. such a structure that is present in both parallel corpora and on which the alignment is performed. Defaults to “align”.


[since manatee 2.67]

for parallel corpora only: comma-separated list of mapping definition files to aligned corpora.


for old versions of corpora only: the name of the new version of the corpus


default attribute for CQL query evaluation. It is also used to map attribute alias “-” in the web API.


identification of the person responsible for maintaining the corpus


the structure that should be considered to be a document, defaults to “doc”.


a regular expression determining which tokens should not be considered words, defaults to [^[:alpha:]].* – therefore the default definition of a word is [[:alpha:]].*.


configuration of languages and corpora for bilingual word sketch using the “Translate button”.

For example:

WSTRANSLATE ",French,frtenten,German,detenten2_simplews,Polish,pltenten,Spanish,eseutenten11_freeling,Italian,ittenten"

Appropriate dictionaries named - are expected in pcdict_path (/corpora/pcdicts or as specified in run.cgi).


to set a structure attribute containing a date for computing trends. Values must be in the numeral format, e.g. 2016/01 where still the same delimiters (e.g. /) always are in the same places


link for the concordance results to the word sketch relation “definitions”. The value is 1. (usually)

Location features


path to the default GDEX configuration for the given corpus (used only if GDEX is installed)


arbitrary corpus information like source, size etc. There is no automatic processing of this data. If the value begins with the “@” character the rest is taken as a full path of a file containing INFO data


link to arbitrary documentation on the web


link to a list of error codes, should be used only in case of learner corpora (error-annotated)


full path of the corpus home directory which contains all data files


reference corpus for CQL thesaurus queries


path for the subcorpus definition file. See Subcorpus config documentation. A subcorpus definition file allows you to share subcorpora with all users of the corpus


path for global subcorpora, default PATH/subcorp


URL of the tagset documentation, so users can quickly refer to it from a button next to the CQL box in the search interface. If absent, the button does not appear in the interface


path to compiled term data files, defaults to PATH/terms (prefix)


path to term grammar definition file


path to media type, for instance:

    ATTRIBUTE audio { 
        MEDIATYPE "audio" 

and then in the corpus, you should have the following structure:

< s audio="somefile.wav" > This is a sentence in the corpus. < /s >

The possible MEDIATYPE are: audio, image, video.


full path of the source vertical text(s), it is used only by “encodevert” program, if the value starts with “|” the rest is treated as a shell command, and the vertical text will be taken from the standard output of the command, e.g.

VERTICAL "| xzcat /path/to/vertical/english-vertical{01..10}.vert.xz"

when VERTICAL is created by 10 compressed archives, they always will be used in the same order, the order of tokens cannot be changed during recompilation. It is strongly recommended not to use * (asterisk) which does not guarantee that multiple files are always be processed in the same order.


path to compiled word sketches data files (including WS highlights), defaults to PATH/WSATTR-ws (prefix), use “none” to disable Word Sketch feature at all


path to the word sketches grammar definition file


use old scores, obsolete computation of word sketch scores; do not use this setting


path to the file with a word highlights definition used for the Find X tool (formerly called “histograms”)


path to word sketches thesaurus data files, defaults to PATH/WSATTR-thes

Structures and Attributes


This provides the definition of a positional attribute. At least one positional attribute should be defined. The first defined attribute is the default one (in most cases it is the word form and the name of this attribute is “word”). The order is important: the nth ATTRIBUTE in the corpus config file provides a name for the contents of the nth column in the vertical file. Some features of SkE require attributes called ‘tag’, ‘lemma’, ‘lempos’, ‘lc’. The order of attributes is not important, it is used only during the initial encoding and to display the list of attributes in the concordance “View options” form. Attribute names must start with an alphabetic character or underscore and subsequent characters must be alphanumerical (including underscore). i.e. (‘a’..’z’|’A’..’Z’|’_’)(‘a’..’z’|’A’..’Z’|’0′..’9’|’_’)*


This provides the definition of a structural tag. Structures can themselves have attributes (structural attributes as opposed to the positional attribute described above). Structure names must start with an alphabetic character or underscore and subsequent characters must be alphanumerical (including underscore). i.e. the same criteria as ATTRIBUTE names above.

ATTRIBUTES (both positional and STRUCTURE ones) can be repeated and customized using additional options, such as:


Locale code of a used language (and region), this value is used in the query evaluation (of regular expressions) and the concordance line sorting. Defaults to the value of DEFAULTLOCALE (set explicitly or using LANGUAGE.)


Indicates whether the attribute value consists of multiple parts separated by MULTISEP. The parts will be inserted into the lexicon in addition to the entire value.


Default value for the attribute value if no value is present in the source vertical
[since manatee 2.30] if not overridden by this configuration option, the default DEFAULTVALUE is set to “===NONE===”.


Defines a single-byte multivalue separator, if empty (“”), the attribute value is split into characters.


States that the attribute should be treated as hierarchical. Its value is the separator of the fields in the hierarchy (can be any string). For structural attributes (header fields) only. The hierarchical headers need to be specified as MULTIVALUE in the corpus config file. An example of a hierarchical attribute definition in the corpus configuration file (see more here):

   ATTRIBUTE domain {
      MULTIVALUE  "1"
      MULTISEP ","
      HIERARCHICAL   "::"

Additional information for structure attributes. In the case of preloaded corpora or Sketch Engine local installation, there can be an interlink referring to a file on the server its content will be displayed in the interface instead of the link itself.

  • ATTRDOCLABEL (deprecated now)

Display name for the ATTRDOC link.


Indicates that attribute values will be sorted according to their numeric value. For structural attributes (header fields) only.

Advanced topics on attributes and structures, see below.

Controlling display in concordances


the attribute of a structure to display as a default reference in the left-hand column of a concordance. Defaults to the first attribute of the first structure or “#” (token number) if no attribute of a structure exists. The syntax is SHORTREF “=structure.attribute”, e.g. “=doc.id” for displaying only the value of “doc.id” or SHORTREF “structure.attribute” (without equal sign) for displaying the pair “structure.attribute=value”. There can be multiple links in SHORTREF, e.g. SHORTREF “=bncdoc.id,#,bncdoc.year” has a reference “J0P,#507890,bncdoc.year=1977”. (This adds also the link Doc Id to the left-hand menu.)


template for the CQL query that is created from the simple query. Defaults to [lc=”%s” | lemma_lc=”%s”] (if the *lc attributes are present), otherwise [word=”%s” | lemma=”%s”] if word and lemma are present, and [word=”%s”] if only word is present. Any CQL query template can be used. The string “%s” is replaced by the actual content of the simple query field.


comma-separated list of references that will be used to determine the References list in view options. Defaults to all attributes of the structures specified in the config file.


[since Bonito 3.53]

comma-separated list of structure attributes that will be used for Frequency -> Text types in the concordance view. Defaults to SUBCORPATTRS.


comma-separated list of references which will be displayed as a full reference at the bottom of the window when the user clicks on the SHORTREF for a concordance line. Defaults to the value of STRUCTATTRLIST.


maximum number of query result lines in query evaluation, default=0 meaning no limit


[since Manatee 2.107]
maximum number of positions in the KWIC of a concordance, default=100 (if you want unlimited KWIC use MAXKWIC=0)


maximum number of positions in context for displaying and saving concordance, default is 100 to both sides which means the limit of 300 positions (100 left + 100 KWIC + 100 right). If you want unlimited context use



maximum number of positions in the detail view (at the bottom of conc view), default=MAXCONTEXT


a type of embedded media, you can use one of the following values: audio, video, image, unknown, e.g.

    ATTRIBUTE audio { 
        MEDIATYPE "audio" 


display the whole structure in the detail view (at the bottom of conc view)


name of the structure that will cause line wrap in the detail context window (new in bonito 2.76), default none

Attributes of structures

In an additional information block of a STRUCTURE option there can be arbitrary many ATTRIBUTE options (with possible additional option blocks), which can include the following:


label used in references instead of the name of ATTRIBUTE, for example

     ATTRIBUTE tld {
         LABEL "Top level domain"


if “1” (by default) it displays an XML tags like

< s>, < s/>

in concordances; set it to “0” not to display a tag, use other DISPLAY… options to modify concordance output


If the attribute DISPLAYTAG has a value “0”, it is allowed to replace the default XML tag with a different character or characters. DISPLAYBEGIN sets a starting tag of the structure, e.g.

< s >

can be changed to


by the following configuration:


A special value “_EMPTY_” means that nothing is displayed. This value is usually used for a special structure glue

< g/ >

See this example:


[since manatee 2.28] structure attributes can be displayed using the %(attribute_name) syntax, e.g. if you’d like the structure to be marked by the text “STR-” concatenated with the id attribute of structure str, use the following syntax:

        ATTRIBUTE id


same as DISPLAYBEGIN only for the end tag


This attribute can be used to change color of any structure in Concordance. It might be useful in corpora that are used for analysing learners’ grammar mistakes. Such a grammar mistake might use a special structure and then DISPLAYCLASS will be used inside this structure to set the color. In the following example “concred” is used as an argument and it means the color will be red. A hexadecimal value is also supported, e.g. “#FF0000”.

 ATTRIBUTE type { 
     LABEL "Error" 
 DISPLAYBEGIN "[%(type)]" 
 DISPLAYEND     "|" 
 DISPLAYCLASS "concred" 

A screenshot from a corpus “English Wikipedia sample with Error annotations”, where different colors (red, green) are used to differentiate between good and bad language usage.

Error annotations - colors


in text types, if an attribute has more than 22 possible options, an input text field with autolookup is offered to user rather than a list of checkboxes. MAXLISTSIZE can change the default value. Example:

STRUCTURE document {
       ATTRIBUTE id
       ATTRIBUTE domain {
               MAXLISTSIZE "30"


Enables nested structures. Note that nested structures may not be supported in all functions and in some cases they may cause a mismatch in frequency figures. They are primarily designed to enable nested error annotation in learner corpora. Nesting is limited to a depth of 100 levels and deep (> 10 levels) nesting may have a noticeable negative performance impact. Generally, it should be avoided if possible by defining a structure for each level of nesting, e.g. section, subsection, subsubsection etc.

    NESTED 1


to set a structure attribute for which the average value will be counted. This value can be displayed in the concordance results and word sketch results.

For example, a text corpus has the structure attribute “review” containing ratings (on a scale of 1 to 5) for each document. Then the STARATTR configuration for this attribute “review” counts the average value of the ratings of each document where the search token occurs. If the word XYZ occurs in 3 documents with the ratings 2, 3 and 4, the STARATTR configuration returns the number “3” and the word XYZ will have this value in concordance and word sketch results.

    ATTRIBUTE review

Controlling Text Types (concordance form and subcorpus creation)


Comma-separated list of structure attributes displayed in the query form and in frequency by text types, if FREQTTATTRS is not set. It also determines attributes available for creating subcorpora in the user interface. Use “|” instead of comma to display attributes on the same row in the subcorpus creation form. Use “|*” instead of a comma to put the next attribute right under the previous attribute (rather than on a new line — introduced in bonito 3.90)  Example:

SUBCORPATTRS "bncdoc.alltyp|bncdoc.alltim|*bncdoc.id,bncdoc.wridom|bncdoc.wrimed"

— subcorp form contains 2 rows:

1: alltyp and alltim+id 2: wridom and wrimed

If SUBCORPATTRS is not defined, all attributes will be shown in the ‘Text Type’ part of the concordance form (usually not the desired outcome)

Word classes and lemmas


option for computing bilingual dictionary. If this attribute is empty, it is tested whether the actual corpus contains one of these attributes in the following order: lemma_lc, lemma, lc, word.


[since manatee 2.204]
This option is used for the specification of a list of positional attributes for which trends (diachronic analysis tool) will be calculated.

value: comma-separated positional attributes. By default (if DIAPOSATTRS is not presented), trends are calculated for all positional attributes available in the corpus. For instance, if you need to compute trends only for attributes word and lemma:

DIAPOSATTRS "word,lemma"


list of pairs providing a mapping between a user-friendly name for a word class, and a regular expression matching the POS-tags which are instances of it. The first character of the string is a separator used to separate values in the rest of the string. If specified, users can select items like ‘noun’, ‘verb’ from a menu when specifying right or left context for a concordance search. Example for TreeTagger English tagset (modified version of Penn tagset):

WPOSLIST ",adjective,JJ.?,adverb,RB.?.,conjunction,CC,determiner,DT,noun,N.*,noun singular,NN,noun plural,NNS,preposition,IN,pronoun,PP,verb,V..?|MD"


list of pairs providing a mapping between a word class suffix, and a user-friendly name for the word class. Only makes sense when there is a mechanism in place for relating lemmas to lemmas-with-a-word-class-suffix, so that, for example, brush (noun) and brush (verb) can get different word sketches. The first character of the string is a separator used to separate values in the rest of the string.

Example from BNC:

LPOSLIST ",adjective,-j,adverb,-a,conjunction,-c,noun,-n,preposition,-p,pronoun,-d,verb,-v"


LPOSLIST of word sketch POSes. The same format as, and defaults to, LPOSLIST, but LPOSLIST if used after Lemma box in the Concordance form whereas WSPOSLIST is used in Word Sketch and Thesaurus forms. This is deprecated since bonito 3.90 — directive *WSPOSLIST in sketch grammar should be used instead.


attribute name for which word sketches are computed, defaults to “lempos” if the corpus has that attribute, or “lemma” if the corpus has that attribute, or DEFAULTATTR otherwise


number of characters to strip from the end of a word in a word sketch listings, defaults to 2 if WSATTR is “lempos”, or 0 otherwise. (It means that you need to explicitly use this option with the value “2” when the word sketch attribute is wordpos.)


minimum difference of WS scores to highlight in different colors


mininum frequency for a candidate of word sketches, default value is “0”, it is suitable for filtering nonsignificant relations (e.g. spam, mistakes) and also for faster computing of word sketches in large corpora


text types for which the word highlights (Find X tool) are computed. Any changes in WSATTATTRS require corpus recompilation with  --recompile-lcm 

Dynamic attributes

Dynamic attributes are positional or structure attributes that are not present in the source vertical text, but derived automatically from another attribute (which may be also dynamic). As such they represent a shorthand for adding derived attributes without the need of putting them into the source vertical file and without the need of recompiling the whole corpus. Dynamic attributes also occupy less disk space while being only marginally slower for querying if you use the “index” DYNTYPE.

An example of dynamic attributes that you can find many corpora in Sketch Engine are the lc and lemma_lc attributes that stand for lowercase word form and lowercase lemma, respectively. They are derived from the word and lemma attribute by applying a builtin lowercase dynamic function and you should always add them to your corpus configuration file unless you change the SIMPLEQUERY specification of simple search not to use them, because otherwise the search is going to fallback to use regular expressions to achieve case-insensitive search, which is slower by orders of magnitude.

Sketch Engine contains several builtin dynamic functions that allow primitive string manipulation (such as e.g. stripping parts of string) and you can add your one quite easily add new ones (see DYNLIB). Dynamic attributes are created when compiling the corpus using encodevert. If you want to setup additional dynamic attributes or after you have changed a dynamic attribute, it is not necessary to recompile the whole corpus. Just adjust the configuration file and create the dynamic attributes using mkdynattr:



if this option exists, the attribute is a dynamic one and the value of this option is the name of the C function which defines the string transformation or the path to the shell script if DYNLIB is set to “pipe”. The example below shows the dynamic attribute “lemma” derived from another attribute “lempos” by stripping the last two characters (so that intend-v maps to intend).

ATTRIBUTE   lemma {
     DYNAMIC striplastn
     DYNLIB  internal
     ARG1    "2"
     FUNTYPE i
     FROMATTR lempos
     TYPE   index


The dynamic library containing the desired function selected by DYNAMIC. This can be either set to “internal” to use the builtin functions, “pipe” to provide your own shell script or to an absolute path of a dynamic library (.so shared object as defined by your POSIX system) that will be loaded automatically.


type of given function

  • 0 – no extra argument
  • c – one char extra argument
  • s – one (const char*) extra argument
  • i – one int extra argument
  • cc – two char extra arguments
  • ii – two int extra arguments
  • ss – two (const char*) extra arguments
  • ci – two extra arguments, first char, second int
  • cs, sc, si, ic, is – likewise


the first optional fixed parameter


the second optional fixed parameter


the name of the attribute from which the dynamic attribute is created


type of the dynamic attribute, possible values are “plain”, “lexicon”, “index” and “freq”

  • plain – only displaying is enabled
  • lexicon – displaying and counting (frequency distribution) are enabled
  • index – all features including querying are enabled
  • freq – like index, but with frequencies for each attribute value being precompiled. This should be used for cases where lots of source attribute values are mapped to a single target (dynamic) attribute value (e.g. URL to top level domain name) where recomputing frequencies from source attribute may take a long time. Unless you struggle with disk space a lot, you should choose this option which gives the best performance.


use transformation function for queries (multivalues not supported) Example:

	DYNAMIC  lowercase
	DYNLIB   internal
	ARG1     "C"
	DYNTYPE  index

This means that, for query [lc=”Test”] we apply the function “lowercase” to the argument “Test” to search for “test”; without TRANSQUERY, we would search for “Test” and find nothing


maps one positional attribute into another which is especially useful e.g. for querying thesaurus using wordforms.

        MAPTO lempos

The mapping is compiled with mknormattr CORPUS SOURCE_ATTRIBUTE TARGET_ATTRIBUTE. See MAPTO directive documentation.

This configuration can have multiple values separated by a comma character.


This attribute was sunset and it is no longer used.

The structure attribute “wordcount” represents a number of words in a structure. The value is calculated during compilation, therefore the attribute should not be present in the vertical file.

    ATTRIBUTE wordcount

Data representation options

In the following, a list of attribute and structure types is given which can be used to change the way the index is built or accessed at runtime. To place them in the configuration file, modify the STRUCTURE or ATTRIBUTE as follows:

      TYPE ""


      TYPE "FD_FGD"

Attribute types

The names follow the pattern “_” where specifies handling of the .rev index file and specifies handling of the .text index file. The lexicon (.lex) is always memory mapped. If or starts with “M”, it denotes memory mapping, with “F” it denotes file based access without memory mapping. Generally switching between types that differ only in the M/F letters does not require recompilation, switching between any other types always requires recompilation of the corpus.

MD_MD (default for positional attributes)

Both .rev and .text file use the delta-code index and are memory mapped. Cannot be used for .text files exceeding 500 MB.


As above but the .rev file is not memory mapped while the .text file is.

[since manatee 2.159.5] Same as MD_MD.


As above but neither the .rev nor the .text index is memory mapped.

[since manatee 2.159.5] Same as MD_MD.


As above plus the .rev.idx index is not memory mapped too.

[since manatee 2.159.5] Same as MD_MD.


As FD_FGD below but maximally for a few billion tokens. It has already been replaced with the FD_FGD attribute which is highly recommended to use instead of this attribute. The .rev and .text files are memory mapped.

[since manatee 2.159.5] The .rev and .text files are memory mapped.


Type of an attribute which should be used for any corpora with the main binary file (.text) bigger than 500MB (approx 250M tokens, depending on lexicon size). The .rev and the .text index files are memory mapped, the latter one uses giga delta-codes.


As above except .rev and .text are not memory mapped.

[since manatee 2.159.5] Same as MD_MGD.


As above but all .rev, .rev.idx, .text and .text.off indices are not memory mapped. In addition, any statistic indices are not memory mapped too.

[since manatee 2.159.5] Same as MD_MGD.

MD_MI (default for structure attributes)

Both .rev and .text files are memory mapped, but the latter one uses plain integers instead of delta-codes.


As above but the .rev index is not memory mapped.

[since manatee 2.159.5] Same as MD_MI.


Type of an attribute which can be used if the attribute values are unique. The compilation of such an attribute is much faster then and the indices require less space (no reverse index (.rev.*) and .text.* needed)


Switching among the default (not given) type, file32 and map32 or among file64 and map64 does not require recompilation, any other switching of types requires recompilation of the corpus.


The .rng file is not memory mapped and cached. Supports corpora up to 231 positions.

[since manatee 2.181.4] The .rng file is memory mapped.


As above but the .rng file is not memory mapped but cached.

[since manatee 2.181.4] The .rng file is memory mapped.


As above but the .rng file is memory mapped.


Enables the range file (.rng) to address 263 corpus positions. It is necessary to use when there are more than 231 tokens in the corpus. The .rng file is not memory mapped but cached.

[since manatee 2.181.4] The .rng file is memory mapped.


As above but the .rng file is memory mapped. Do not use when the range file is too large so as not to allocate too much system resources (.rng must fit into the system memory).ftr