private PosTag getPosTag(TagSet<PosTag> model, Map<String,PosTag> adhocTags, String tag, String language) { PosTag posTag = model.getTag(tag); if(posTag != null){ return posTag; } posTag = adhocTags.get(tag); if(posTag != null){ return posTag; } posTag = new PosTag(tag); adhocTags.put(tag, posTag); log.info("Encountered umapped POS tag '{}' for langauge '{}'",tag,language); return posTag; }
@Override public PosTag parse(ObjectNode jValue, AnalysedText at) { PosTagInfo tagInfo = new PosTagInfo(); JsonNode tag = jValue.path("tag"); if(!tag.isTextual()){ throw new IllegalStateException("Unable to parse PosTag. The value of the " +"'tag' field MUST have a textual value (json: "+jValue+")"); } tagInfo.tag = tag.getTextValue(); if(jValue.has("lc")){ tagInfo.categories = JsonUtils.parseEnum(jValue, "lc",LexicalCategory.class); } else { tagInfo.categories = EnumSet.noneOf(LexicalCategory.class); } if(jValue.has("pos")){ tagInfo.pos = JsonUtils.parseEnum(jValue, "pos", Pos.class); } else { tagInfo.pos = EnumSet.noneOf(Pos.class); } PosTag posTag = posTagCache.get(tagInfo); if(posTag == null){ posTag = new PosTag(tagInfo.tag,tagInfo.categories,tagInfo.pos); posTagCache.put(tagInfo, posTag); } return posTag; }
@Override public PosTag parse(ObjectNode jValue, AnalysedText at) { PosTagInfo tagInfo = new PosTagInfo(); JsonNode tag = jValue.path("tag"); if(!tag.isTextual()){ throw new IllegalStateException("Unable to parse PosTag. The value of the " +"'tag' field MUST have a textual value (json: "+jValue+")"); } tagInfo.tag = tag.getTextValue(); if(jValue.has("lc")){ tagInfo.categories = JsonUtils.parseEnum(jValue, "lc",LexicalCategory.class); } else { tagInfo.categories = EnumSet.noneOf(LexicalCategory.class); } if(jValue.has("pos")){ tagInfo.pos = JsonUtils.parseEnum(jValue, "pos", Pos.class); } else { tagInfo.pos = EnumSet.noneOf(Pos.class); } PosTag posTag = posTagCache.get(tagInfo); if(posTag == null){ posTag = new PosTag(tagInfo.tag,tagInfo.categories,tagInfo.pos); posTagCache.put(tagInfo, posTag); } return posTag; }
posTag = adhocTags.get(posAttr.getPartOfSpeech()); if(posTag == null){ posTag = new PosTag(posAttr.getPartOfSpeech()); adhocTags.put(posAttr.getPartOfSpeech(), posTag); log.warn(" ... missing PosTag mapping for {}",posAttr.getPartOfSpeech());