Wolfram Language

Procesamiento de texto y lenguaje

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.

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

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

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

Procesa de forma similar con otra oración.

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

Compare la estructura de las dos oraciones comparando sus matrices de distancia.

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

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.

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"];

Calcule todas las matrices de distancia.

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

Compare las oraciones de los distintos artículos en pares.

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

Éstos son los pares de oraciones con la misma estructura.

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

Este es el primer par.

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

Ejemplos relacionados

de en fr ja pt-br ru zh