Wolfram Language

Traitement de texte et de langues

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.

In[1]:=
Click for copyable input
graph = TextStructure["Time flies like an arrow.", "ConstituentGraph"]
Out[1]=

Calculez la matrice des distances entre tous les sommets de ce graphe.

In[2]:=
Click for copyable input
distancemat1 = GraphDistanceMatrix[First[graph]]; MatrixForm[distancemat1]
Out[2]//MatrixForm=

Procédez de même pour une autre phrase.

In[3]:=
Click for copyable input
graph2 = TextStructure["I fly in the sky.", "ConstituentGraph"]; distancemat2 = GraphDistanceMatrix[First[graph2]];

Comparez la structure de deux phrases en comparant leurs matrices de distance.

In[4]:=
Click for copyable input
distancemat1 == distancemat2
Out[4]=

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.

In[5]:=
Click for copyable input
processWikiPage[article_] := Select[TextCases[WikipediaData[article], "Sentences"], WordCount[#] < 5 &]; genStructure[article_] := Flatten[TextStructure[#, "ConstituentGraph"] & /@ processWikiPage[article]];
In[6]:=
Click for copyable input
phrasestruct1 = genStructure["Philosophy"]; phrasestruct2 = genStructure["History"];

Calculez toutes les matrices de distance.

In[7]:=
Click for copyable input
adj1 = GraphDistanceMatrix /@ phrasestruct1; adj2 = GraphDistanceMatrix /@ phrasestruct2;

Comparez les deux phrases des différents articles deux par deux.

In[8]:=
Click for copyable input
comparison = Outer[Equal, adj1, adj2, 1];

Voici les paires de phrases ayant la même structure.

In[9]:=
Click for copyable input
pickedSentences = Flatten[Pick[Outer[List, phrasestruct1, phrasestruct2], comparison, True], 1];

Voici la première paire.

In[10]:=
Click for copyable input
First[pickedSentences]
Out[10]=

Exemples connexes

de en es ja pt-br ru zh