1. A method comprising: generating a graphical user interface for defining a semantic analysis topic; receiving, via the graphical user interface, one or more first user inputs indicating a search term; generating, based on the search term and a sample corpus of data, a plurality of content themes, wherein generating the plurality of content themes comprises accessing a semantic space to perform semantic analysis on the sample corpus of data; presenting the plurality of content themes in the graphical user interface; receiving, via the graphical user interface, one or more second user inputs indicating that a first content theme in the plurality of content themes is not pertinent to the semantic analysis topic; generating, based at least on the one or more second user inputs, a semantic filter to include in the semantic analysis topic, wherein the semantic filter matches messages corresponding to a second content theme, in the plurality of content themes, that is pertinent to the semantic analysis topic, and wherein the semantic filter does not match messages corresponding to the first content theme that is not pertinent to the semantic analysis topic; receiving a plurality of messages; and categorizing the plurality of messages at least by applying the semantic analysis topic to the plurality of messages, wherein applying the semantic analysis topic to the plurality of messages comprises applying the semantic filter to the plurality of messages, wherein applying the semantic filter to the plurality of messages comprises, for a message in the plurality of messages: vectorizing the message to obtain a vectorized message; analyzing the vectorized message against a topic vector corresponding to the semantic filter; and annotating the message, based at least in part on analyzing the vectorized message against the topic vector, wherein the method is performed by one or more devices comprising one or more hardware processors.