Mathematica has the built-in function TextStructure, with the option "DependencyStrings" that provides the dependency strings of a sentence. Unfortunately, this function is incredibly slow.
Timing@TextStructure["He wrote a book. I read the book he wrote.",
"DependencyStrings", PerformanceGoal -> "Speed"]
{0.59375, {"(wrote, 2)((nsubj, (He, 1)), (dobj, (book, 4)((det, (a, \ 3)))))", "(read, 2)((nsubj, (I, 1)), (dobj, (book, 4)((det, (the, \ 3)), (rcmod, (wrote, 6)((nsubj, (he, 5)))))))"}}
As seen it in the example above, two sentences take 0.6 of a second. Does anyone how to speed it up or is there an alternative, as the aim is to use it on the dataset with 15,000+ observations?