Markovian Semantic Relatedness

Meaning, found by wandering.

Give it a word. A random walk across a co-occurrence graph finds the terms that sit closer to it than they usually are to anything else: its concept, a query expansion with intuitive weights. Then it runs a ranked semantic search of any raw text with that concept, scoring chunks of whatever size you choose (here, paragraphs). No embeddings, no tokenizing, no index, no training on the text being searched.

The paper's toy corpus as a co-occurrence graph, with a random walk starting at "cat"cathatfatinthedogwildlostchildBillGBill G
The paper's toy corpus. Walks from cat reach fat, in, and hat sooner than walks from elsewhere in the graph do: they're cat's concept.

How it works

  1. 01

    Count co-occurrence

    The source text is split into chunks (here, Wikipedia paragraphs), and each chunk becomes a set of terms. Terms that appear in the same chunk are linked, and the counts make a graph over the whole vocabulary.

  2. 02

    Walk from the chosen term

    A random walk spreads out from the chosen term, step by step. How soon it reaches each term measures how close that term is to the chosen one.

  3. 03

    Measure against comparison terms

    The model also walks from about 50 comparison terms spread across the graph, which tells it how far each term usually is from everything. Terms much closer to the chosen term than they usually are to other terms form its concept.

  4. 04

    Semantically search raw text

    The concept's weighted terms are matched directly in raw, untokenized text, chunk by chunk. Several concepts combine by geometric mean, so a chunk ranks high only if it's relevant to every concept.