Multiple labels in supervised learning algorithm
For starters, Naive Bayes is probably not appropriate here.  It assumes independence among the inputs (hence the "Naive") and words in a sentence are very dependent.

But, assuming you really want to run with NB as an algorithm to start your experimentation, there are two options I'd consider:

Ungraceful: Lots of NB classifiers

This would be an alternative approach.  Make a corupus of all the words observed as your vector of inputs.  Make a corpus off all the tags that are observed as your vector of outputs.  An NB classifier with multiple outputs is the equivalent of having multiple NB classifiers with one output each (so do whichever is easier to implement in whatever software framework you're using).  Treat each element as a training sample where a given input (a word) is a 1 if that word is present and a 0 if that word isn't.  Use the same binary scheme for the output.

This brute forces the application of the NB Classifier to your data, and leaves you to find meaning by still haivng to mine the huge set of classifiers you'll be left with.

More Graceful: Process your data

This is the approach I'd recommend if you want to run with one multiple-class NB Classifier.  

Your goal here is to figure out how to map each set of tags to a single class.  I'm sure there is some sort of clustering scheme or network analysis (perhaps ["celebrity"] linked to ["murder"] could become a the segment ["debauchery"]) that will sensibly map your tags to one single cluster.  If you treat tags as nodes and two given tags together as links, then you'll want to look into community detection algorithms (which is where I'd start).  But, if you just want something working, then some sort of hack on the tags that converts a list of tags to only the tag that's most commonly seen in your dataset would be enough.

This method front-loads the work of cleaning your data and would make the NB Classifier's output easier to understand.