¿Existe una utilidad de C # para hacer coincidir patrones en árboles (análisis sintáctico)?

Estoy trabajando en un proyecto de procesamiento de lenguaje natural (PNL) en el que uso un analizador sintáctico para crear un árbol de análisis sintáctico a partir de una oración determinada.

Ejemplo de entrada: Me encontré con Joe y Jill y luego nos fuimos de compras
Ejemplo de salida: [TOP [S [S [NP [PRP I]] [VP [VBD corrió] [PP [IN en] [NP [NNP Joe] [CC y] [NNP Jill]]]] [CC y] [S [ ADVP [RB entonces]] [NP [PRP we]] [VP [VBD fue] [NP [NN shopping]]]]]

Estoy buscando una utilidad de C # que me permita hacer consultas complejas como:

Consigue el primer VBD relacionado con 'Joe'Obtener el NP más cercano a 'Compras'

Aquí está unUtilidad de Java que hace esto, estoy buscando un C # equivalente.
Cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta