Grammar¶
- class textworld.generator.text_generation.CountOrderedDict[source]¶
Bases:
OrderedDict
An OrderedDict whose empty items are 0
- class textworld.generator.text_generation.MergeAction[source]¶
Bases:
object
Group of actions merged into one.
This allows for blending consecutive instructions.
- textworld.generator.text_generation.assign_description_to_object(obj, grammar, game)[source]¶
Assign a descripton to an object.
- textworld.generator.text_generation.assign_description_to_room(room, game, grammar)[source]¶
Assign a descripton to a room.
- textworld.generator.text_generation.assign_name_to_object(obj, grammar, game_infos)[source]¶
Assign a name to an object (if needed).
- textworld.generator.text_generation.assign_new_matching_names(obj1_infos, obj2_infos, grammar, exclude)[source]¶
- textworld.generator.text_generation.clean_replace_objs(grammar, desc, objs, game)[source]¶
Return a cleaned/keyword replaced for a list of objects.
- textworld.generator.text_generation.describe_event(event, game, grammar)[source]¶
Assign a descripton to a quest.
- Return type
str
- textworld.generator.text_generation.expand_clean_replace(symbol, grammar, obj, game)[source]¶
Return a cleaned/keyword replaced symbol.
- textworld.generator.text_generation.generate_instruction(action, grammar, game, counts)[source]¶
Generate text instruction for a specific action.
- textworld.generator.text_generation.get_action_chains(actions, grammar, game)[source]¶
Reduce the action list by combining similar actions.
- textworld.generator.text_generation.is_seq(chain, game)[source]¶
Check if we have a theoretical chain in actions.
- textworld.generator.text_generation.list_to_string(lst, det, det_type='a')[source]¶
Convert a list to a natural language string.
- textworld.generator.text_generation.obj_list_to_prop_string(objs, property, game, det=True, det_type='a')[source]¶
Convert an object list to a nl string list of names.
- textworld.generator.text_generation.repl_sing_plur(phrase, length)[source]¶
Alter a sentence depending on whether or not we are dealing with plural or singular objects (for counting)
- textworld.generator.text_generation.replace_num(phrase, val)[source]¶
Add a numerical value to a string.
- class textworld.generator.text_grammar.Grammar(options={}, rng=None, kb=None)[source]¶
Bases:
object
Context-Free Grammar for text generation.
- Parameters
options (
Union
[GrammarOptions
,Mapping
[str
,Any
]]) – For customizing text generation process (seetextworld.generator.GrammarOptions
for the list of available options).rng (
Optional
[RandomState
]) – Random generator used for sampling tag expansions.
- check()[source]¶
Check if this grammar is valid.
TODO: use logging mechanism to report warnings and errors.
- Return type
bool
- expand(text, rng=None)[source]¶
Expand some text until there is no more tag to expand.
- Parameters
text (
str
) – Text potentially containing grammar tags to be expanded.rng (optional) – Random generator used to chose an expansion when there is many. By default, it used the random generator of this grammar object.
- Returns
Resulting text in which there is no grammar tag left to be expanded.
- Return type
expanded_text
- generate_name(obj_type, room_type='', include_adj=None, exclude=[])[source]¶
Generate a name given an object type and the type room it belongs to.
- Parameters
obj_type (
str
) – Type of the object for which we will generate a name.room_type (optional) – Type of the room the object belongs to.
include_adj (optional) – If True, the name can contain a generated adjective. If False, any generated adjective will be discarded. Default: use value grammar.options.include_adj
exclude (optional) – List of names we should avoid generating.
- Return type
Tuple
[str
,str
,str
]- Returns
name – The whole name, i.e.
adj + " " + noun
.adj – The adjective part of the name.
noun – The noun part of the name.
- get_all_adjective_for_type(type)[source]¶
Get all possible adjectives for a given object type.
- Parameters
type (
str
) – Object type.- Returns
All possible adjectives sorted in alphabetical order.
- Return type
adjectives
- get_all_expansions_for_tag(tag, max_depth=500)[source]¶
Get all possible expansions for a grammar tag.
- Parameters
tag (
str
) – Grammar tag to be expanded.max_depth (optional) – Maximum recursion depth when expanding tag.
- Returns
All possible expansions.
- Return type
expansions
- get_all_expansions_for_type(type)[source]¶
Get all possible expansions for a given object type.
- Parameters
type (
str
) – Object type.- Returns
All possible names.
- Return type
names
- get_all_names_for_type(type, include_adj)[source]¶
Get all possible names for a given object type.
- Parameters
type (
str
) – Object type.include_adj (optional) – If True, names can contain generated adjectives. If False, any generated adjectives will be discarded.
- Returns
All possible names sorted in alphabetical order.
- Return type
names
- get_all_nouns_for_type(type)[source]¶
Get all possible nouns for a given object type.
- Parameters
type (
str
) – Object type.- Returns
All possible nouns sorted in alphabetical order.
- Return type
nouns
- get_random_expansion(tag, rng=None)[source]¶
Return a randomly chosen expansion for the given tag.
- Parameters
tag (
str
) – Grammar tag to be expanded.rng (optional) – Random generator used to chose an expansion when there is many. By default, it used the random generator of this grammar object.
- Returns
An expansion chosen randomly for the provided tag.
- Return type
expansion
- split_name_adj_noun(candidate, include_adj)[source]¶
Extract the full name, the adjective and the noun from a string.
- Parameters
candidate (
str
) – String that may contain one adjective-noun sperator ‘|’.include_adj (optional) – If True, the name can contain a generated adjective. If False, any generated adjective will be discarded.
- Return type
Optional
[Tuple
[str
,str
,str
]]- Returns
name – The whole name, i.e.
adj + " " + noun
.adj – The adjective part of the name.
noun – The noun part of the name.
- class textworld.generator.text_grammar.GrammarOptions(options=None, **kwargs)[source]¶
Bases:
object
- classmethod deserialize(data)[source]¶
Creates a
GrammarOptions
from serialized data.- Parameters
data (
Mapping
) – Serialized data with the needed information to build aGrammarOptions
object.- Return type
- serialize()[source]¶
Serialize this object.
- Results:
GrammarOptions’s data serialized to be JSON compatible.
- Return type
Mapping
- allowed_variables_numbering¶
Append numbers after an object name if there is not enough variation for it.
- Type
bool
- ambiguous_instructions¶
When True, in the game objective, objects of interest might be refer to by their type or adjective rather than full name.
- Type
bool
- blend_descriptions¶
When True, objects sharing some properties might be described in a single sentence rather than separate consecutive ones.
- Type
bool
- blend_instructions¶
When True, consecutive actions to be accomplished might be described in a single sentence rather than separate ones.
- Type
bool
- include_adj¶
When True, object names can be preceeded by an adjective.
- Type
bool
- names_to_exclude¶
List of names the text generation should not use.
- Type
List[str]
- only_last_action¶
When True, only the last action of a quest will be described in the generated objective.
- Type
bool
- theme¶
Grammar theme’s name. All
*.twg
files starting with that name will be loaded.- Type
str
- unique_expansion¶
When True, #symbol# are force to be expanded to unique text.
- Type
bool
- property uuid: str¶
Generate UUID for this set of grammar options.
- Return type
str