Parse all of your content urls for the cats.
https:/
https:/ null/
https:/ null/ www.
https:/ null/ www. string /
https:/ null/ www. string / string /
https:/ null/ www. string / string / string
https:/ null/ www. string / string / string.filetype
(the actual category is often one of those strings with the others holding a close relationship to the content)...
be as granular as you want, I just split by folder delimiter /, but you can go down to the word or even the char if you wish, however your datasets in the following will get huge quick...
Push all of the post parsing url/string info (string:from:url) into a csv (structured text) (one triple per line) and then imp[ort the csv files onto a string database... like NEO4j ( graph bd )
This will give you both the possible semantic strings used for cats, but also the string relationship to its parent urls out of the box...
A high density of nodes with the same string in thier URLs is usually a good category candidate or a share URL footprint for the future .
Re-export this info into a structured form again (preferably postgres db for next step)
Push all content text at URLs into a doc db. (like Solr)
Form Queries on Docs (ElasticSearch).
Bring all of the data together visually in OmniDB for easier db project management and planning.
Run the companion ML toolbox https://www.2ndquadrant.com/en/resources/2uda/ to Omnidb against the dataset.
Attaching the blob texts as a node like you would an image for classification and using the url split strings (and optionally manually supervise against the vocab list you have above) as your "correct" classification and with a little luck you will have the basis for a content classifier.
I am sure there are missing pieces and the above gist may look more like I am pissing in the snow than writing an etl / discovery recipe... but it might at least get the ideas flowing.