Since release v1.3.0, stanza has a constituency parser for English. Support for more languages will follow. It would be great if we could access the constituency parse from within the spaCy wrapper too.
At first I thought I'd create a separate package for this that uses spacy_stanza under the hood and then registers a custom component that adds the constituency parse. However, that implies either copying most of spacy_stanza, subclassing StanzaTokenizer, and writing to Underscore objects in __call__. Or only creating a custom component and after receiving a Doc, parsing its text again with stanza to get the constituency parse. Neither of these are ideal, so I would hope that you are open to incorporating such functionality in spacy_stanza directly.
The stanza constituency parser adds a constituency object (a Tree) to every sentence. Things that may be considered
- Subclassing the stanza constituency Tree so that we can use spaCy Tokens as node labels. This would allow us to navigate the spaCy sentence Span object via the tree
- Register
._.constituency for every sentence span and every span that is a constituent (a sub-classed stanza Tree)
- Register
._.constituency for every Token, which would be its subtree in the full tree with itself as the node (a sub-classed stanza Tree)
If you agree I can work on this from time to time.
Since release v1.3.0, stanza has a constituency parser for English. Support for more languages will follow. It would be great if we could access the constituency parse from within the spaCy wrapper too.
At first I thought I'd create a separate package for this that uses spacy_stanza under the hood and then registers a custom component that adds the constituency parse. However, that implies either copying most of
spacy_stanza, subclassingStanzaTokenizer, and writing to Underscore objects in__call__. Or only creating a custom component and after receiving a Doc, parsing its text again with stanza to get the constituency parse. Neither of these are ideal, so I would hope that you are open to incorporating such functionality in spacy_stanza directly.The stanza constituency parser adds a
constituencyobject (aTree) to every sentence. Things that may be considered._.constituencyfor every sentence span and every span that is a constituent (a sub-classed stanza Tree)._.constituencyfor every Token, which would be its subtree in the full tree with itself as the node (a sub-classed stanza Tree)If you agree I can work on this from time to time.