我正在使用SentiWordNet和Apache NLP库开发一个情感分析工具。问题是当我使用NLP库标记句子时,我得到的结果是这样的:
Test_NNP Tweet_NNP is_VBZ ready_JJ now_RB for_IN the_DT change._NN
但是SentiWordNet的POS
标签是像a
、v
、n...等
这样的形式,我如何将NNP
、VBZ
、JJ
转换为n
或v
或a
,使用Apache NLP?是否应该使用不同的库来进行标记?
回答:
您从Apache NLP获得的标签是Penn Treebank标签,您需要将这些标签转换为与SentiWordNet兼容的标签。以下函数可以将Treebank标签映射到WordNet的词性名称:
def get_wordnet_pos(treebank_tag): if treebank_tag.startswith('J'): return 'a' elif treebank_tag.startswith('V'): return 'v' elif treebank_tag.startswith('N'): return 'n' elif treebank_tag.startswith('R'): return 'r' else: return ''