nltk.ccg.chart module

The lexicon is constructed by calling lexicon.fromstring(<lexicon string>).

In order to construct a parser, you also need a rule set. The standard English rules are provided in chart as chart.DefaultRuleSet.

The parser can then be constructed by calling, for example: parser = chart.CCGChartParser(<lexicon>, <ruleset>)

Parsing is then performed by running parser.parse(<sentence>.split()).

While this returns a list of trees, the default representation of the produced trees is not very enlightening, particularly given that it uses the same tree class as the CFG parsers. It is probably better to call: chart.printCCGDerivation(<parse tree extracted from list>) which should print a nice representation of the derivation.

This entire process is shown far more clearly in the demonstration: python chart.py

class nltk.ccg.chart.BackwardTypeRaiseRule[source]

Bases: AbstractChartRule

Class for applying backward type raising.

NUMEDGES = 2
__init__()[source]
apply(chart, grammar, left_edge, right_edge)[source]

Return a generator that will add edges licensed by this rule and the given edges to the chart, one at a time. Each time the generator is resumed, it will either add a new edge and yield that edge; or return.

Parameters

edges (list(EdgeI)) – A set of existing edges. The number of edges that should be passed to apply() is specified by the NUM_EDGES class variable.

Return type

iter(EdgeI)

class nltk.ccg.chart.BinaryCombinatorRule[source]

Bases: AbstractChartRule

Class implementing application of a binary combinator to a chart. Takes the directed combinator to apply.

NUMEDGES = 2
__init__(combinator)[source]
apply(chart, grammar, left_edge, right_edge)[source]

Return a generator that will add edges licensed by this rule and the given edges to the chart, one at a time. Each time the generator is resumed, it will either add a new edge and yield that edge; or return.

Parameters

edges (list(EdgeI)) – A set of existing edges. The number of edges that should be passed to apply() is specified by the NUM_EDGES class variable.

Return type

iter(EdgeI)

class nltk.ccg.chart.CCGChart[source]

Bases: Chart

__init__(tokens)[source]

Construct a new chart. The chart is initialized with the leaf edges corresponding to the terminal leaves.

Parameters

tokens (list) – The sentence that this chart will be used to parse.

class nltk.ccg.chart.CCGChartParser[source]

Bases: ParserI

Chart parser for CCGs. Based largely on the ChartParser class from NLTK.

__init__(lexicon, rules, trace=0)[source]
lexicon()[source]
parse(tokens)[source]
Returns

An iterator that generates parse trees for the sentence. When possible this list is sorted from most likely to least likely.

Parameters

sent (list(str)) – The sentence to be parsed

Return type

iter(Tree)

class nltk.ccg.chart.CCGEdge[source]

Bases: EdgeI

__init__(span, categ, rule)[source]
categ()[source]
dot()[source]

Return this edge’s dot position, which indicates how much of the hypothesized structure is consistent with the sentence. In particular, self.rhs[:dot] is consistent with tokens[self.start():self.end()].

Return type

int

end()[source]

Return the end index of this edge’s span.

Return type

int

is_complete()[source]

Return True if this edge’s structure is fully consistent with the text.

Return type

bool

is_incomplete()[source]

Return True if this edge’s structure is partially consistent with the text.

Return type

bool

length()[source]

Return the length of this edge’s span.

Return type

int

lhs()[source]

Return this edge’s left-hand side, which specifies what kind of structure is hypothesized by this edge.

See

TreeEdge and LeafEdge for a description of the left-hand side values for each edge type.

nextsym()[source]

Return the element of this edge’s right-hand side that immediately follows its dot.

Return type

Nonterminal or terminal or None

rhs()[source]

Return this edge’s right-hand side, which specifies the content of the structure hypothesized by this edge.

See

TreeEdge and LeafEdge for a description of the right-hand side values for each edge type.

rule()[source]
span()[source]

Return a tuple (s, e), where tokens[s:e] is the portion of the sentence that is consistent with this edge’s structure.

Return type

tuple(int, int)

start()[source]

Return the start index of this edge’s span.

Return type

int

class nltk.ccg.chart.CCGLeafEdge[source]

Bases: EdgeI

Class representing leaf edges in a CCG derivation.

__init__(pos, token, leaf)[source]
categ()[source]
dot()[source]

Return this edge’s dot position, which indicates how much of the hypothesized structure is consistent with the sentence. In particular, self.rhs[:dot] is consistent with tokens[self.start():self.end()].

Return type

int

end()[source]

Return the end index of this edge’s span.

Return type

int

is_complete()[source]

Return True if this edge’s structure is fully consistent with the text.

Return type

bool

is_incomplete()[source]

Return True if this edge’s structure is partially consistent with the text.

Return type

bool

leaf()[source]
length()[source]

Return the length of this edge’s span.

Return type

int

lhs()[source]

Return this edge’s left-hand side, which specifies what kind of structure is hypothesized by this edge.

See

TreeEdge and LeafEdge for a description of the left-hand side values for each edge type.

nextsym()[source]

Return the element of this edge’s right-hand side that immediately follows its dot.

Return type

Nonterminal or terminal or None

rhs()[source]

Return this edge’s right-hand side, which specifies the content of the structure hypothesized by this edge.

See

TreeEdge and LeafEdge for a description of the right-hand side values for each edge type.

span()[source]

Return a tuple (s, e), where tokens[s:e] is the portion of the sentence that is consistent with this edge’s structure.

Return type

tuple(int, int)

start()[source]

Return the start index of this edge’s span.

Return type

int

token()[source]
class nltk.ccg.chart.ForwardTypeRaiseRule[source]

Bases: AbstractChartRule

Class for applying forward type raising

NUMEDGES = 2
__init__()[source]
apply(chart, grammar, left_edge, right_edge)[source]

Return a generator that will add edges licensed by this rule and the given edges to the chart, one at a time. Each time the generator is resumed, it will either add a new edge and yield that edge; or return.

Parameters

edges (list(EdgeI)) – A set of existing edges. The number of edges that should be passed to apply() is specified by the NUM_EDGES class variable.

Return type

iter(EdgeI)

nltk.ccg.chart.compute_semantics(children, edge)[source]
nltk.ccg.chart.demo()[source]
nltk.ccg.chart.printCCGDerivation(tree)[source]
nltk.ccg.chart.printCCGTree(lwidth, tree)[source]