Compare la estructura de palabras
La estructura de dos oraciones pueden ser comparadas calculando y procesando sus respectivos grafos de constituyentes.
Muestre el árbol de constituyentes de una oración como un grafo.

graph = TextStructure["Time flies like an arrow.", "ConstituentGraph"]

Calcule la matriz de distancias entre todos los vértices de este grafo.

distancemat1 = GraphDistanceMatrix[First[graph]];
MatrixForm[distancemat1]

Procesa de forma similar con otra oración.

graph2 = TextStructure["I fly in the sky.", "ConstituentGraph"];
distancemat2 = GraphDistanceMatrix[First[graph2]];
Compare la estructura de las dos oraciones comparando sus matrices de distancia.

distancemat1 == distancemat2

Las dos oraciones tienen la misma estructura.
Encuentre oraciones con la misma estructura en dos artículos distintos de Wikipedia. Primero extraiga las oraciones con una cuenta de palabras dada, y genere el grafo de constituyentes para cada una de ellas.

processWikiPage[article_] :=
Select[TextCases[WikipediaData[article], "Sentences"],
WordCount[#] < 5 &];
genStructure[article_] :=
Flatten[TextStructure[#, "ConstituentGraph"] & /@
processWikiPage[article]];

phrasestruct1 = genStructure["Philosophy"];
phrasestruct2 = genStructure["History"];
Calcule todas las matrices de distancia.

adj1 = GraphDistanceMatrix /@ phrasestruct1;
adj2 = GraphDistanceMatrix /@ phrasestruct2;
Compare las oraciones de los distintos artículos en pares.

comparison = Outer[Equal, adj1, adj2, 1];
Éstos son los pares de oraciones con la misma estructura.

pickedSentences =
Flatten[Pick[Outer[List, phrasestruct1, phrasestruct2], comparison,
True], 1];
Este es el primer par.

First[pickedSentences]
