Treex::Core::Scenario - a larger Treex processing unit, composed of blocks


version 2.20210102


 use Treex::Core;

 my $doc1, $doc2;
 my $scenario = Treex::Core::Scenario->new(from_file => 'myscenario.scen' );

 $scenario = Treex::Core::Scenario->new(from_string => 'W2A::EN::Segment language=en');
 $scenario->apply_to_documents($doc1, $doc2);


A Treex scenario consists of a sequence of (possibly parametrized) Treex blocks.

Scenarios can be described by a simple textual format, which is either passed directly to the scenario construction, or is contained in a text file whose name is passed.

The string description of scenarios looks as follows.

1) It contains a list of block names from which their 'Treex::Block::' prefixes were removed.

2) The block names are separated by one or more white spaces.

3) The block names are listed in the same order in which they should be applied on data.

4) For each block, there can be one or more parameters specified, using the attribute=value form.

5) Comments start with '#' and end with the nearest newline character.

Scenario example:

 # morphological analysis of an English text
 Util::SetGlobal language=en selector=src



my $scenario = Treex::Core::Scenario->new(from_string => 'W2A::Tokenize language=en W2A::Lemmatize' );

Constructor parameter from_string specifies the names of blocks which are to be executed (in the specified order) when the scenario is applied on a Treex::Core::Document object.

my $scenario = Treex::Core::Scenario->new(from_file => 'myscenario.scen' );

The scenario description is loaded from the file.

Running the scenario


Run the scenario. One of the blocks (usually the first one) must be the document reader (see Treex::Core::DocumentReader) that produces the documents on which this scenario is applied.


Apply this scenario to a Treex::Core::Document instance obtained from elsewhere. Please note that start() must be called before the first call to this method and end() after the last call to this method.

The scenario does not need to contain a document reader if documents are given explicitly.


Apply process_start() to all blocks in the scenario. This is called automatically by run(), but must be called before apply_to_documents().


Apply process_end() to all blocks in the scenario. This is called automatically by run(), but must be called after calls to apply_to_documents().

Internal methods for loading scenarios


loads a scenario description from a file


parses a textual description of a scenario


constructs a scenario textual description from an existing scenario instance accepts named parameter multiline - when set, blocks are separated by newline instead of space


use blocks and call their constructors can be used for preloading blocks for e.g. server applications when running scenario blocks are loaded automatically


do all initialization so after this method scenario is ready to run currently just load blocks


resets the document reader, in future it will rebuild reloaded blocks


Treex::Core::Block Treex::Core


Zdeněk Žabokrtský <>

Martin Popel <>

David Mareček <>

Tomáš Kraut <>

Martin Majliš <>

Ondřej Dušek <>


Copyright © 2011-2012 by Institute of Formal and Applied Linguistics, Charles University in Prague

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.