It has a big list of artifacts and similar things that it checks things against, if things are not found in that list then it will search them for keywords to assign a category. It's not perfect yet but it works fairly well. Feedback is more than welcome!
For items with commas in them, it ends up splitting it into two at some point in the code. Any where the first section is two words or shorter, it will reattach it to the second half. Ones with a comma further on the short name need to have the part before the comma added to the wort.bl table in the 'Wort Data' script. Also, things which are only two words long to begin with needed to be added to the wort.wl table to be processed properly. Very few items need to be entered into these tables, fortunately!
Here's the output on looking at @Tridemon