Mapping a patient's speech as a network has proved to be a useful way of understanding formal thought disorder in psychosis. However, to date, graph theory tools have not incorporated the semantic content of speech, which is altered in psychosis. We developed an algorithm, netts, to map the semantic content of speech as a network, then applied netts to construct semantic speech networks for a general population sample, and a clinical sample comprising patients with first episode psychosis (FEP), people at clinical high risk of psychosis (CHR-P), and healthy controls. Semantic speech networks from the general population were more connected than size-matched randomised networks, with fewer and larger connected components, reflecting the non-random nature of speech. Networks from FEP patients were smaller than from healthy participants, for a picture description task but not a story recall task. For the former task, FEP networks were also more fragmented than those from controls; showing more, smaller connected components. CHR-P networks showed fragmentation values in-between FEP patients and controls. A clustering analysis suggested that semantic speech networks captured novel signal not already described by existing NLP measures. Network features were also related to negative symptom scores and scores on the Thought and Language Index, although these relationships did not survive correcting for multiple comparisons. Overall, these data suggest that semantic networks can enable deeper phenotyping of formal thought disorder in psychosis. We are releasing Netts as an open Python package alongside this manuscript.