DR McCullochABOUT

Measuring the Fragments graphD. R. McCulloch

Measuring the Fragments graph

DR McCulloch

September 2026

Abstract. Between October 2023 and September 2026 I wrote about my work in WhatsApp notes to myself, in my MA submissions at Central Saint Martins, in the catalogue of my digital archive and in seventeen drafts of an artist bio, and I prompted Claude code to break all of it into single lines, which a model, Claude Sonnet 5, read against each other a theme or two at a time, scoring each relation it found from one line to another from 0 to 9 on eight kinds. Once the lines that reached the set from more than one source had been folded together the graph held 915 lines and 3,650 relations. I measured it by out-strength on the naming relations, weighted betweenness, Leiden communities set against the themes, two-step patterns counted against shuffled labels, structural balance in signed triangles, PageRank share by period and a count of the ideas no relation connects to a finished piece. Dropping every relation scored below 4 leaves 17 of the 20 most central lines where they were, but when the model read three themes a second time only 48% of its relations came back, so I read any single relation as a suggestion.

1Sources

The lines come from eight extracts of what I have written about my work. Three are exports of the notes I send myself on WhatsApp, which run from October 2023 to September 2026, the first six months of them under the name Ghost of David; three are the final submission, portfolio and Unit 3 critical evaluation I handed in for the MA at Central Saint Martins in May 2024; one holds seventeen earlier drafts of my artist bio and the last is the catalogue of my digital archive. Each extract lists my phrasings, word for word, and my works, each a title with a short description that a model wrote when the extract was made, and because those descriptions are not mine only the titles of works appear on this site. A line is dated by its WhatsApp timestamp where it has one, by its year if it is a work and otherwise by the months its source covers, which leaves most of the bio drafts and half the catalogue undated.

2Themes

I embedded every line on my laptop with bge-base-en-v1.5 [1], which turns a line into 768 numbers scaled to unit length, so that the cosine between two lines’ vectors measures how near they are in meaning, and none of the text left the machine at this step. I clustered the vectors by cosine similarity with k-means++ [2] from a fixed seed, choosing the number of clusters so that each would hold about 38 lines and folding any cluster of fewer than eight into its nearest neighbour, which left 26 themes of between 12 and 92 lines. The model named each theme in five words or fewer as it read it and gathered the 26 names into five bands in one further request; the theme and band names on the About page are its own.

3Relations

I sent the lines to Claude Sonnet 5, at medium effort and through OpenRouter, in 149 requests that cost $8.88 in all. Every request opened with the same fixed instructions, which define the nine kinds a line can be (coinage, image, claim, confession, heckle, method, kin, idea and work), the four registers it can be written in and the eight relations in a sentence each, and ask for a strength from 0 to 9 on every relation, where 1 to 3 is faint, 4 to 6 clear and 7 to 9 strong, with a reason of fifteen words or fewer, and only where a close reader of my work would defend it. A relation runs from one line to another, and a pair can have scores on several kinds in each direction. The model read the lines in blocks, in the four passes of Table 1, and a pair it was shown and scored at zero throughout counts as examined with no relation; the 113,436 pairs it was shown are the denominator for the tension in 5.5.

4The graph

Before measuring anything I folded together lines that had reached the set more than once, since the portfolio carries screenshots of the WhatsApp notes, the bio drafts restate a sentence with a word changed and a note often gives the title of the piece it became. Two lines became one when their text matched once case and punctuation were stripped, when their character bigrams overlapped by a Dice coefficient [3] of 0.75 or more at lengths within 70% of each other, when one was the title of a work and the other the same words, or when a line of 30 characters or more sat inside another no more than twice its length. I kept the copy from the earliest source, the notes counting first and the catalogue last, and moved the others’ relations to it.

Table 1. The four passes, with the number of requests in each. Every pair inside a theme was read once, in Pass A; Passes B and C cover pairs across themes only where the themes or the lines sit close together in the embedding, so two lines far apart in wording, in themes far apart, were never read side by side.
PassWhat the model was shownWhat it returned
A 26Every line of one theme, 12 to 92 linesEach line’s kind and register, a name for the theme and the relations inside it
B 71Two neighbouring themes, each theme with its three nearest by centroid, at most 120 lines a requestThe relations that cross between the two
C 51Up to 40 pairs, each a line and one of its two nearest neighbours in a theme no A or B request set beside its ownA score for each pair
T 1The 26 theme namesFive bands

That left 915 lines as the nodes of a directed graph and 3,650 relations as its edges, and for every measure below I kept only scores of 4 or more, which 3,210 of the edges have. From an edge’s eight scores sE … sR I took a positive weight, a negative weight and a length,

w+ = sE + sS + sN + sG + sB + ½sR,  w− = sC + sU,(1)
d = 10 − maxk sk,(2)

with rhymes at half weight because they are the faintest kind and the most common. I used w+ for centrality and flow, w− for tension and d wherever a measure follows shortest paths, where a pair scored 9 on any kind lies one step apart and a pair scored 4 lies six.

5Measures

5.1The lines that name the rest

A line’s out-strength on one kind is the sum of that kind’s scores on every edge that leaves it. On the naming relations the highest is 78, for ‘I like to call my approach algorithmic frottage.’, a sentence from the bio drafts, and the next two, at 61 and 55, are a longer statement of the same method and the title Algorithmic Entanglement.

1

Measuring the Fragments graphD. R. McCulloch

5.2The lines that join the rest

The betweenness of a line v [4] is the share of shortest paths between every other ordered pair of lines that pass through it,

b(v) = 1(n − 1)(n − 2) ∑s≠v≠t gst(v)gst,(3)

where gst counts the shortest paths from s to t under the length d and gst(v) those that pass through v, computed by Brandes’s algorithm [5] in NetworkX. The two highest, ‘rubbing the ouroboros’ at 0.101 and a long note to myself about flitting between perspectives at 0.100, each lie on about a tenth of those paths.

5.3Groups that cut across the themes

To group the lines again, from the relations alone, I summed w+ over both directions of each pair and partitioned the undirected graph with the Leiden algorithm [6] to maximise modularity [7] from a fixed seed, which gave 23 communities of ten or more lines at a modularity of 0.54. I set them against the 26 themes by their normalised mutual information,

NMI(X, Y) = 2 I(X; Y)H(X) + H(Y),(4)

the information two groupings share divided by the mean of their entropies [8], which is 1 when they are the same partition and 0 when they are independent. It came to 0.29, and the adjusted Rand index [9] to 0.07, so the communities match the themes only loosely. The three spread over the most themes hold 39 lines from 17 themes, 46 from 16 and 44 from 12.

5.4I heckle myself

I labelled every edge with its strongest kind, breaking ties in the order E S C U N G B R, and counted each path of two edges from a line through a second to a third by the pair of labels on it. I then shuffled the labels among the edges 200 times, leaving the graph as it was, and scored each pattern after the motif method of Milo et al. [10] by

z = N − N̄σN,(5)

where N is the observed count and N̄ and σN are the mean and standard deviation over the shuffles. The chain in which one line undercuts a second that undercuts a third occurs 239 times, at z = 26.1, and the pattern next furthest above chance, an echo followed by a naming, reaches z = 7.1. The example on the About page runs from ‘A proper 8chan little shit.’ through ‘I’m just doing that angry white bloke thing’ to ‘My work is sometimes that of an angry white man raging with class consciousness, ready to be co-opted.’, and no undercutting relation in the graph is returned in the other direction.

5.5Where the tension sits

For structural balance [11, 12] I made the graph undirected and signed, giving each pair the sum of w+ − w− over its two directions, and took every triangle of three lines all related to one another. A triangle is balanced when

sgn(wab) sgn(wbc) sgn(wca) > 0,(6)

which holds when all three pairs agree or when two lines agree and both pull against the third, and 56 of the 683 triangles, or 8%, fail it. To place the tension among the themes I summed w− over the relations between each pair of themes, a theme with itself included, and divided by the number of pairs of their lines the model had examined, keeping only theme pairs with at least 100 of them. The three highest, which the About page names, come to 23.3, 16.2 and 15.0 per hundred pairs, and the first two are each inside a single theme.

5.6What is rising and fading

I ran PageRank [13] over the whole graph with w+ as the weights and a damping factor of 0.85, which gives each line i a score πi, and summed the scores of each theme’s lines in two periods, the lines dated from January 2023 to June 2024 and those dated from July 2025, leaving out the year between, the lines from before 2023 and the undated. A theme t moves by

Δt = Pt(late)P(late) − Pt(early)P(early),(7)

where Pt(p) sums πi over the lines of t dated in period p and P(p) over every line dated in it, in percentage points. The theme the model named for language models, cognition and consciousness rose by 9.3 points and the one it named for Prometheus, AGI and authorship fell by 9.9, the largest moves either way.

5.7Ideas that never became work

The model marked 174 lines as ideas for pieces, and 113 of them have no becomes relation scored 4 or more leaving them. I ranked those 113 by the grounding, naming and echoing scores on the edges that arrive at them, with rhyming scores at half, which puts The Death of Literacy first at 64.5; the About page lists the six best supported of those published.

6How far to trust this

Every relation here is one reading by one model. I ranked the lines by PageRank on graphs built from all 3,650 relations, from those whose strongest score is 4 or more and from those at 7 or more, and the top 20 at 4 share 17 lines with the top 20 from every relation, against only 4 for the top 20 at 7; every ranking in section 5 is made at 4. Before the full run I had sent the three themes nearest the median size through Pass A with three models, and of the 77 relations the full run later drafted inside those themes Claude Sonnet 5 itself had already found 37 (48%), DeepSeek V4 Pro 22 (29%) and Gemini 3.8 Flash 27 (35%), from 79, 74 and 44 relations of their own. With fewer than half of Sonnet’s relations coming back on a second reading, I read any one relation as a suggestion, which is why the matrix on the About page opens on the relations scored 7 or more. The measures use every line, including the 158 I withheld from the public data set, and every line quoted on the About page or here is one of the 756 published.

References

  1. Xiao, S., Liu, Z., Zhang, P. et al. (2024) C-Pack: packed resources for general Chinese embeddings. Proc. SIGIR ’24, 641–649.
  2. Arthur, D. and Vassilvitskii, S. (2007) k-means++: the advantages of careful seeding. Proc. 18th ACM-SIAM Symposium on Discrete Algorithms, 1027–1035.
  3. Dice, L. R. (1945) Measures of the amount of ecologic association between species. Ecology 26(3), 297–302.
  4. Freeman, L. C. (1977) A set of measures of centrality based on betweenness. Sociometry 40(1), 35–41.
  5. Brandes, U. (2001) A faster algorithm for betweenness centrality. Journal of Mathematical Sociology 25(2), 163–177.
  6. Traag, V. A., Waltman, L. and van Eck, N. J. (2019) From Louvain to Leiden: guaranteeing well-connected communities. Scientific Reports 9, 5233.
  7. Newman, M. E. J. and Girvan, M. (2004) Finding and evaluating community structure in networks. Physical Review E 69(2), 026113.
  8. Danon, L., Díaz-Guilera, A., Duch, J. and Arenas, A. (2005) Comparing community structure identification. Journal of Statistical Mechanics, P09008.
  9. Hubert, L. and Arabie, P. (1985) Comparing partitions. Journal of Classification 2(1), 193–218.
  10. Milo, R., Shen-Orr, S., Itzkovitz, S. et al. (2002) Network motifs: simple building blocks of complex networks. Science 298(5594), 824–827.
  11. Heider, F. (1946) Attitudes and cognitive organization. Journal of Psychology 21(1), 107–112.
  12. Cartwright, D. and Harary, F. (1956) Structural balance: a generalization of Heider’s theory. Psychological Review 63(5), 277–293.
  13. Brin, S. and Page, L. (1998) The anatomy of a large-scale hypertextual Web search engine. Computer Networks and ISDN Systems 30(1–7), 107–117.

2

← Back to About Walk the lines →