Compare a estrutura das orações
A estrutura de duas orações pode ser comparada calculando e processando seus respectivos gráficos de elementos.
Mostre a árvore de elementos de uma oração como um gráfico .
In[1]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_97.png)
graph = TextStructure["Time flies like an arrow.", "ConstituentGraph"]
Out[1]=
![](assets.pt-br/compare-the-structure-of-sentences/O_65.png)
Calcule a matriz de distância entre todos os vértices deste gráfico.
In[2]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_98.png)
distancemat1 = GraphDistanceMatrix[First[graph]];
MatrixForm[distancemat1]
Out[2]//MatrixForm=
![](assets.pt-br/compare-the-structure-of-sentences/O_66.png)
Continue de forma similar com outra oração.
In[3]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_99.png)
graph2 = TextStructure["I fly in the sky.", "ConstituentGraph"];
distancemat2 = GraphDistanceMatrix[First[graph2]];
Compare a estrutura das duas orações comparando suas matrizes de distância.
In[4]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_100.png)
distancemat1 == distancemat2
Out[4]=
![](assets.pt-br/compare-the-structure-of-sentences/O_67.png)
As duas orações tem a mesma estrutura.
Encontre orações com a mesma estrutura em dois artigos diferentes na Wikipedia. Primeiro, extraia orações com um dado número de palavras e gere o gráfico de elementos para cada uma delas.
In[5]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_101.png)
processWikiPage[article_] :=
Select[TextCases[WikipediaData[article], "Sentences"],
WordCount[#] < 5 &];
genStructure[article_] :=
Flatten[TextStructure[#, "ConstituentGraph"] & /@
processWikiPage[article]];
In[6]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_102.png)
phrasestruct1 = genStructure["Philosophy"];
phrasestruct2 = genStructure["History"];
Calcule todas as matrizes de distância.
In[7]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_103.png)
adj1 = GraphDistanceMatrix /@ phrasestruct1;
adj2 = GraphDistanceMatrix /@ phrasestruct2;
Compare as orações dos diferentes artigos em pares.
In[8]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_104.png)
comparison = Outer[Equal, adj1, adj2, 1];
Esses são os pares de orações com a mesma estrutura.
In[9]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_105.png)
pickedSentences =
Flatten[Pick[Outer[List, phrasestruct1, phrasestruct2], comparison,
True], 1];
Este é o primeiro par.
In[10]:=
![Click for copyable input](assets.pt-br/compare-the-structure-of-sentences/In_106.png)
First[pickedSentences]
Out[10]=
![](assets.pt-br/compare-the-structure-of-sentences/O_68.png)