我正在使用词袋模型进行文本分类。结果不够理想,测试集的准确率低于70%。
我正在考虑使用词性标注来区分词语的功能。该如何进行呢?
我考虑将标签附加到词语上,例如,对于“love”这个词,如果它作为名词使用,可以这样标注:
love_noun
如果它作为动词使用,可以这样标注:
love_verb
回答:
如果您有数百个类别,测试集的准确率接近70%并不算差。您可能需要测量整体精确度和召回率,而不仅仅是准确率。
您提出的方法听起来不错,这是一种通过添加特征组合来增加额外特征的方法。这里有一些建议:
保留原始特征。也就是说,不要用love_noun
或love_verb
替换love
。相反,您可以从love
获得两个特征:
love, love_noun (或) love, love_verb
如果您需要一些示例代码,可以从nltk
Python包开始。
>>> from nltk import pos_tag, word_tokenize>>> pos_tag(word_tokenize("Love is a lovely thing"))[('Love', 'NNP'), ('is', 'VBZ'), ('a', 'DT'), ('lovely', 'JJ'), ('thing', 'NN')]
考虑使用n-gram,或许可以从添加2-gram开始。例如,您可能有“in”和“stock”,您可能只会删除“in”,因为它是一个停用词。如果您考虑2-gram,您将得到一个新特征:
in-stock
这与“stock”具有不同的含义。在某些情况下,这可能会非常有帮助,例如,区分“finance”和“shopping”。