Skip to content

Tag

burmesenlp.tag.pos_tag

pos_tag(words: Sequence[str], engine: str = 'rule', *, lexicon: Optional[Lexicon] = None) -> List[Tuple[str, str]]

Tag an already-segmented word list.

Source code in src/burmesenlp/tag/__init__.py
def pos_tag(
    words: Sequence[str],
    engine: str = "rule",
    *,
    lexicon: Optional[Lexicon] = None,
) -> List[Tuple[str, str]]:
    """Tag an already-segmented word list."""
    lex = lexicon if lexicon is not None else Lexicon.default()
    tagger = get_tag_engine(engine)(lex)
    return tagger.tag(words)

burmesenlp.tag.rule.POSTagger

POSTagger(lexicon: Lexicon)

Filter-based rule POS tagger: candidates → rules → final tags.

Source code in src/burmesenlp/tag/rule.py
def __init__(self, lexicon: Lexicon):
    self._lexicon = lexicon

tag

tag(words: Sequence[str], *, mwe: Optional[Sequence[MWEToken]] = None, mwe_pos: Optional[Mapping[int, str]] = None) -> List[Tuple[str, str]]

Tag words, optionally forcing POS at BMWE-merged indices.

Pass either mwe (uses each span's index + resolved_pos()) or an explicit mwe_pos map of merged_index → tag.

Source code in src/burmesenlp/tag/rule.py
def tag(
    self,
    words: Sequence[str],
    *,
    mwe: Optional[Sequence[MWEToken]] = None,
    mwe_pos: Optional[Mapping[int, str]] = None,
) -> List[Tuple[str, str]]:
    """Tag *words*, optionally forcing POS at BMWE-merged indices.

    Pass either ``mwe`` (uses each span's ``index`` + ``resolved_pos()``)
    or an explicit ``mwe_pos`` map of ``merged_index → tag``.
    """
    words = list(words)
    if not words:
        return []
    candidates = [lookup_candidates(w, self._lexicon) for w in words]

    overrides = dict(mwe_pos) if mwe_pos else {}
    if mwe:
        for span in mwe:
            idx = span.index
            if idx is None:
                continue
            if 0 <= idx < len(candidates):
                overrides[idx] = span.resolved_pos()
    for idx, pos in overrides.items():
        if 0 <= idx < len(candidates):
            candidates[idx] = {pos}

    tags = disambiguate(words, candidates)
    return list(zip(words, tags))