我使用Stanford POS Tagger标记句子中的词性,使用以下代码:
private static MaxentTagger tagger = new MaxentTagger(".../english-left3words-distsim.tagger");
String tags= tagger.tagString(st); //st is a string
当单词不是复合词时,将给出结果。但是我想要获得的是诸如“ go back”,“ computer science”,“ picking up”等复合词的POS标签。
有任何想法吗?
最佳答案
根据tagString方法的文档
“此方法将输入标记为单词”
同样,训练模型以识别和标记单词(标记)。建议的解决方案:
编写一个custom annotator取决于POS标记器(在其后运行)以及何时找到复合模式,例如“返回”它可以使用您的自定义注释器注释第一个令牌。您可以通过创建字典和/或匹配语法模式来识别这些模式。后者可能另外需要dependency parser。
使用tokensregex。这提供了实现对标记及其注释而非字符进行操作的正则表达式的功能。
训练可以识别多标记或复合词的新模型。