Comparez la structure des phrases
Vous pouvez comparer la structure de deux phrases en calculant et en traitant leurs graphes constitutifs respectifs.
Affichez l'arbre constitutif d'une phrase sous forme de graphe.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_97.png)
graph = TextStructure["Time flies like an arrow.", "ConstituentGraph"]
![](assets.fr/compare-the-structure-of-sentences/O_65.png)
Calculez la matrice des distances entre tous les sommets de ce graphe.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_98.png)
distancemat1 = GraphDistanceMatrix[First[graph]];
MatrixForm[distancemat1]
![](assets.fr/compare-the-structure-of-sentences/O_66.png)
Procédez de même pour une autre phrase.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_99.png)
graph2 = TextStructure["I fly in the sky.", "ConstituentGraph"];
distancemat2 = GraphDistanceMatrix[First[graph2]];
Comparez la structure de deux phrases en comparant leurs matrices de distance.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_100.png)
distancemat1 == distancemat2
![](assets.fr/compare-the-structure-of-sentences/O_67.png)
Les deux phrases ont la même structure.
Trouvez des phrases avec des structures identiques dans deux articles différents de Wikipédia. Tout d'abord, extrayez des phrases avec un nombre de mots donnés et générez le graphe constituant pour chacune d'elles.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_101.png)
processWikiPage[article_] :=
Select[TextCases[WikipediaData[article], "Sentences"],
WordCount[#] < 5 &];
genStructure[article_] :=
Flatten[TextStructure[#, "ConstituentGraph"] & /@
processWikiPage[article]];
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_102.png)
phrasestruct1 = genStructure["Philosophy"];
phrasestruct2 = genStructure["History"];
Calculez toutes les matrices de distance.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_103.png)
adj1 = GraphDistanceMatrix /@ phrasestruct1;
adj2 = GraphDistanceMatrix /@ phrasestruct2;
Comparez les deux phrases des différents articles deux par deux.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_104.png)
comparison = Outer[Equal, adj1, adj2, 1];
Voici les paires de phrases ayant la même structure.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_105.png)
pickedSentences =
Flatten[Pick[Outer[List, phrasestruct1, phrasestruct2], comparison,
True], 1];
Voici la première paire.
![Click for copyable input](assets.fr/compare-the-structure-of-sentences/In_106.png)
First[pickedSentences]
![](assets.fr/compare-the-structure-of-sentences/O_68.png)