Plus, there is a part-of-speech tagger that provides an intermediate layer of nlp analysis, which makes a backtracking involving a change of part-of-speech («houses» being either a verb of a noun) quite harder (yet not impossible).
POS taggers improve parsers performance dramatically but usually are an indication that the parser have limited backtracking capabilities.
You can try it with «the complex houses married soldiers», houses is erroneously marked as a noun.
the/DT
complex/JJ
houses/NNS
married/JJ
and/CC
single/JJ
soldiers/NNS
and/CC
their/PRP$
families/NNS
But, honest, that's a rotten way to try out NL parsers. Nobody claims Stanford's, or anyone's, parser can handle that sort of thing. It throws human language organs because it's specially engineered to do that. And if it can confuse humans, there's no program that it can't confuse, except for one where the right parse is hard-coded.It's an unfair test, is what I'm saying.
https://demos.explosion.ai/displacy/?text=The%20complex%20ho...
vs.
https://demos.explosion.ai/displacy/?text=The%20complex%20co...
Their results for even the most simple english sentences are horrible, often with multiple mistagged words.
As soon as you add relative clauses, they break down entirely.
I've used the Stanford parser for university work (at Masters level). It was part of the pipeline for a sentiment extractor. I didn't get the feeling it performed badly, quite the contrary- the parses it generated were quite useful as features in my extractor. It had this rare feeling of a tool that you can actually use to do something interesting and useful.
Then again, I do have my expectations set very lowly, for this sort of thing, especially after completing my Masters thesis (on grammar induction). Language learning is hard.
Any every slightly more complicated sentence was completely misparsed by CoreNLP and ParseyMcParseface. As I mentioned before, as soon as you introduce relative clauses it breaks down.
It's hard when your research was supposed to discuss how to better handle the common knowledge problem of NLIDBs, but you have to spend a lot of time just to get a kinda useful parse out in the first place.