Alexandre Barroso ←

O caminho entre duas palavras

Suponha que a gente estenda o sentido sobre um mapa: cada palavra vira um ponto, e a proximidade entre pontos vira parentesco de significado. Não é uma ideia extravagante — dispor a língua como geometria, com as palavras como pontos num espaço e suas relações como distâncias, é uma velha ambição da linguística matemática (Kornai, 2008). E a intuição por trás dela é modesta: que os vizinhos de uma palavra dizem algo sobre ela, que o contexto é uma redundância na qual podemos nos apoiar, é fato corriqueiro da teoria da informação (MacKay, 2005).

Agora o passo bonito. Entre duas palavras, trace a reta que as liga e caminhe por ela, colando a cada passo na palavra mais próxima. O que sai não é um salto de A para B, mas uma estrada: uma sequência de palavras intermediárias que costura os dois conceitos. Escolher cada passo de modo a desviar o mínimo da reta é, no fundo, uma pequena otimização (Nocedal & Wright, 1999).

E aqui mora a surpresa: quem decide a estrada não são as pontas. É o espaço. Reorganize as mesmas palavras de outro jeito — outro corpus, outro mundo — e as mesmas duas âncoras passam a atravessar intermediários diferentes:

E se preferir a conta ao desenho, é só percorrer a reta nos dois espaços e ver as duas estradas divergirem entre as mesmas pontas:

pythonas mesmas âncoras, duas estradas
import math
# duas disposições das mesmas 12 palavras num plano
A = {"gelo":(0.05,0.5),"vapor":(0.95,0.5),"frio":(0.2,0.45),"morno":(0.5,0.55),"quente":(0.8,0.5),
     "água":(0.5,0.82),"líquido":(0.6,0.88),"neve":(0.15,0.18),"chuva":(0.42,0.28),"nuvem":(0.72,0.85),"névoa":(0.78,0.72),"rio":(0.38,0.9)}
B = {"gelo":(0.1,0.1),"vapor":(0.9,0.9),"neve":(0.28,0.28),"água":(0.5,0.5),"nuvem":(0.7,0.7),
     "frio":(0.1,0.4),"rio":(0.32,0.6),"líquido":(0.42,0.64),"chuva":(0.62,0.38),"morno":(0.42,0.74),"quente":(0.78,0.48),"névoa":(0.86,0.64)}
def d(p, q): return math.hypot(p[0] - q[0], p[1] - q[1])
def caminho(S, a, b, n=60):
    seq = []
    for i in range(n + 1):
        t = i / n
        x = ((1 - t) * S[a][0] + t * S[b][0], (1 - t) * S[a][1] + t * S[b][1])
        w = min(S, key=lambda k: d(x, S[k]))
        if w not in (a, b) and (not seq or seq[-1] != w): seq.append(w)
    return seq

print("espaço 1:", " → ".join(["gelo"] + caminho(A, "gelo", "vapor") + ["vapor"]))
print("espaço 2:", " → ".join(["gelo"] + caminho(B, "gelo", "vapor") + ["vapor"]))

No fim, onde mora a construção do sentido? Não nas duas palavras que você nomeia, mas nas que você atravessa para ir de uma à outra. Troque a estrada e você terá trocado o que a viagem significa — mesmo que os destinos sejam os mesmos. A mediação se esconde no meio.

  1. Kornai, A. (2008). Mathematical Linguistics. Springer-Verlag London Limited.
  2. MacKay, D. J. C. (2005). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.
  3. Nocedal, J., & Wright, S. J. (1999). Numerical Optimization. Springer-Verlag.

Barroso, A. M. (2025). O caminho entre duas palavras. alexandrebarroso.com. https://alexandrebarroso.com/notes/o-caminho-entre-duas-palavras.html

@misc{barroso2025ocaminhoentreduaspalavras,
  author       = {Alexandre Menezes Barroso},
  title        = {O caminho entre duas palavras},
  year         = {2025},
  howpublished = {alexandrebarroso.com},
  url          = {https://alexandrebarroso.com/notes/o-caminho-entre-duas-palavras.html},
  note         = {alexandrebarroso.com}
}