'Fills in feature sizes and vocabularies using SyntaxNet lexicon.
Must be called before the spec is ready to be used to build TensorFlow
graphs. Requires a SyntaxNet lexicon built at the resource_path. Using the
lexicon, this will call the SyntaxNet custom ops to return the number of
features and vocabulary sizes based on the FML specifications and the
lexicons. It will also compute the number of actions of the transition
system.
This will often CHECK-fail if the spec doesn\'t correspond to a valid
transition system or feature setup.
Args:
resource_path: Path to the lexicon.
tf_master: TensorFlow master executor (string, defaults to \'\' to use the
local instance).'

def fill_from_resources(self, resource_path, tf_master=''):

    check.IsTrue(self.spec.transition_system.registered_name, 'Set    a    transition    system    before    calling    fill_from_resources().')
    context = lexicon.create_lexicon_context(resource_path)
    for (key, value) in self.spec.transition_system.parameters.iteritems():
        context.parameter.add(name=key, value=value)
    context.parameter.add(name='brain_parser_embedding_dims', value=';'.join([str(x.embedding_dim) for x in self.spec.fixed_feature]))
    context.parameter.add(name='brain_parser_features', value=';'.join([x.fml for x in self.spec.fixed_feature]))
    context.parameter.add(name='brain_parser_predicate_maps', value=';'.join(['' for x in self.spec.fixed_feature]))
    context.parameter.add(name='brain_parser_embedding_names', value=';'.join([x.name for x in self.spec.fixed_feature]))
    context.parameter.add(name='brain_parser_transition_system', value=self.spec.transition_system.registered_name)
    with tf.Session(tf_master) as sess:
        (feature_sizes, domain_sizes, _, num_actions) = sess.run(gen_parser_ops.feature_size(task_context_str=str(context)))
        self.spec.num_actions = int(num_actions)
        for i in xrange(len(feature_sizes)):
            self.spec.fixed_feature[i].size = int(feature_sizes[i])
            self.spec.fixed_feature[i].vocabulary_size = int(domain_sizes[i])
    for i in xrange(len(self.spec.linked_feature)):
        self.spec.linked_feature[i].size = len(self.spec.linked_feature[i].fml.split('    '))
    for resource in context.input:
        self.spec.resource.add(name=resource.name).part.add(file_pattern=resource.part[0].file_pattern)
