Exemplo n.º 1
0
def test_add_custom_pipes():
    # create custom function
    def pybo_pos(tokens: List[PyboToken]) -> List[str]:
        """transforms the pybo tokens into word/POS format
        """

        return [f'{t["cleaned_content"]}/{t["pos"]}' for t in tokens]

    # create the pipe to be injected in the pipeline
    pipes = {'proc': {'pybo_pos': pybo_pos}}

    # create a profile using the new pipe to be injected
    # note: providing this profile this way is equal to writing it in pybo.yaml
    # and passing the name of the new profile as argument.
    profile = {
        'pybo_pos': {
            'pre': 'pre_basic',
            'tok': 'pybo',
            'pybo_profile': 'POS',
            'proc': 'pybo_pos',
            'frm': 'plaintext'
        }
    }

    pipeline = BoPipeline(profile=profile, new_pipes=pipes)

    result = pipeline.pipe_str(
        ' ཤི་བཀྲ་ཤིས་  tr བདེ་ལེགས། བཀྲ་ཤིས་བདེ་ལེགས་ཀཀ x  བཀྲ་ཤིས་')
    expected = 'ཤི་/VERB བཀྲ་ཤིས་/NOUN /non-bo བདེ་ལེགས་/NOUN /punct བཀྲ་ཤིས་/NOUN ' \
               'བདེ་ལེགས་/NOUN ཀཀ་/non-word /non-bo བཀྲ་ཤིས་/NOUN'
    assert expected == result
Exemplo n.º 2
0
def test_pipeline():
    pipeline = BoPipeline(profile='pybo_raw_types')
    pipeline.prof = 'POS'  # override the GMD profile from pybo_raw_types
    result = pipeline.pipe_str(
        ' ཤི་བཀྲ་ཤིས་  tr བདེ་ལེགས། བཀྲ་ཤིས་བདེ་ལེགས་ཀཀ x  བཀྲ་ཤིས་')
    expected = """བཀྲ་ཤིས་	2
ཤི་	1
བཀྲ་ཤིས་ 	1
tr 	1
བདེ་ལེགས	1
། 	1
བདེ་ལེགས་	1
ཀཀ 	1
x 	1"""
    assert expected == result
Exemplo n.º 3
0
            "name": "pybo",  # Give the model a name
            "metadata": model_metadata  # Provide metadata (optional)
        },
        "suggestions": suggestions  # Attach the suggestions you made before
    }
    return data


if __name__ == '__main__':
    from pathlib import Path
    import json

    content = "འདོད་པ་རྣམས་ལ་མི་ཆགས་ཤིང་། ཞེ་སྡང་སེམས་ཀྱང་མེད་པར་བྱ། ངན་པར་བལྟ་བ་ཀུན་སྤངས་ན། །བྱང་ཆུབ་སེམས་དཔའི་སྤྱོད་པའོ། །ཞེས་ཚིགས་སུ་བཅད་པ་འདི་དག་སྨྲས་མ་ཐག་ཏུ། " \
              "ཡི་གེར་བྲིས་ནས་འཛམ་བུའི་གླིང་ཀུན་ཏུ་བསྒྲགས་ཏེ། མི་མང་པོ་ཐམས་ཅད་ཀྱིས་དེ་ལ་སློབ་ཅིང་ཅི་ལྟར་བསྟན་པ་བཞིན་དུ་ནན་ཏན་བྱེད་དུ་བཅུག་གོ། །བཅོམ་ལྡན་འདས་དེའི་ཚེ་དེའི་དུས་ན་ཡང་། " \
              "སེམས་ཅན་མང་པོའི་སླད་དུ་ཆོས་ཚོལ་བ་ལ་འགྱོད་པའི་ཐུགས་མི་མངའ་ན། ད་ཅིའི་སླད་དུ་ཆོས་ཀྱང་མ་བསྟན་པ་ཐམས་ཅད་ཡོངས་སུ་བཏང་སྟེ། མྱ་ངན་ལས་འདའ་བར་དགོངས། " \
              "བཅོམ་ལྡན་འདས་གཞན་ཡང་སྔོན་འདས་པའི་བསྐལ་པ་གྲངས་མ་མཆིས་ཚད་མ་མཆིས་པའི་ཕ་རོལ་ན། འཛམ་བུའི་གླིང་འདིར་རྒྱལ་པོ་ཤི་བི་ཞེས་བགྱི་བ་ཞིག་བྱུང་བ་དང་། " \
              "རྒྱལ་པོ་དེ་བཞུགས་པའི་ཕོ་བྲང་ནི་དེ་བ་བརྟ་ཞེས་བགྱི་སྟེ། འབྱོར་བ། བདེ་བ། ལོ་ལེགས་པ། ལོངས་སྤྱོད་དཔག་ཏུ་མེད་པ་དང་ལྡན་ནོ། །དེའི་ཚེ་ན་རྒྱལ་པོ་དེ་འཛམ་བུའི་གླིང་འདི་ལ་དབང་མཛད་དེ། " \
              "རྒྱལ་ཕྲན་ནི་བརྒྱད་ཁྲི་བཞི་སྟོང་། ལྗོངས་ནི་སྟོང་ཕྲག་དྲུག་ཅུའི་ནང་ན། གྲོང་ཁྱེར་ཁྲི་ཕྲག་བརྒྱད་ཅུ་དང་། བཙུན་མོ་དང་ཕོ་བྲང་གི་སླས་སྟོང་ཕྲག་ཉི་ཤུ་དང་། རྒྱལ་བུ་ལྔ་བརྒྱ་ཙམ་དང་། " \
              "བློན་པོ་ཆེན་པོ་སྟོང་ཕྲག་བཅུ་མངའ་བ་ལ་དབང་མཛད་དེ། ཐམས་ཅད་ལ་བྱམས་པ་དང་། སྙིང་རྗེས་མ་ཁྱབ་པ་མེད་དོ། །དེའི་ཚེ་ན་བརྒྱ་བྱིན་ལྷའི་དབང་པོ་ལུས་ཀྱི་ཡོན་ཏན་ལྔ་དང་བྲལ་ཏེ། " \
              "ཚེའི་དུས་བྱེད་དུ་ཉེ་བས་ཤིན་ཏུ་མི་དགའ་སྟེ། མྱ་ངན་བྱེད་པབི་ཤྭ་ཀརྨས་མཐོང་ནས། བརྒྱ་བྱིན་ལ་ཅིའི་སླད་དུ་མྱ་ངན་མཛད་ཅིང་མི་དགྱེས་ཅེས་གསོལ་པ་དང་། བརྒྱ་བྱིན་གྱིས་སྨྲས་པ། " \
              "ང་ནི་ཚེའི་དུས་བྱེད་དུ་ཉེ་བས་ཚེ་འཕོས་བའི་ལྟས་མངོན་དུ་བྱུང་ན། འཇིག་རྟེན་འདིར་སངས་རྒྱས་ཀྱི་ཆོས་ནི་ནུབ་བར་གྱུར་ཏེ། བྱང་ཆུབ་སེམས་དཔའ་ཡང་འཇིག་རྟེན་ན་མི་བཞུགས་ན། " \
              "ཁོ་བོ་གང་ལ་སྐྱབས་སུ་འགྲོ་བ་མི་ཤེས་པས་མྱ་ངན་བྱེད་དོ། །བི་ཤྭ་ཀརྨས་སྨྲས་པ། ལྷའི་དབང་པོ་འཛམ་བུའི་གླིང་ན་རྒྱལ་པོ་ཆེན་པོ་བྱང་ཆུབ་སེམས་དཔའི་སྤྱད་པ་སྤྱོད་པ་ཤི་བི་ཞེས་བྱ་བ་ཞིག་བཞུགས་ཏེ། " \
              "ཤིན་ཏུ་ཡི་དམ་ལ་བརྟན་ཞིང་བརྩོན་འགྲུས་བརྩམས་པས་གདོན་མི་ཟ་བར་མངོན་པར་འཚང་རྒྱ་སྟེ། དེ་ལ་སྐྱབས་སུ་སོང་ན་གདོན་མི་ཟ་བར་དཔུང་གཉེན་དུ་འགྱུར་ཏེ། བགེགས་ལས་རྣམ་པར་ཐར་བར་འགྱུར་རོ། །"
    tagset = {'ཕྲད་ཡོད།': 'a', 'མིང་ཚིག': 'b'}
    task_name = 'test15'

    examples = [{'content': content, 'id': 'dunno'}]
    suggestions = pipeline.pipe_str(content)
    Path(task_name + '_suggestions.json').write_text(
        json.dumps(suggestions, sort_keys=True, indent=4))
Exemplo n.º 4
0
        if t.affix:
            sent_str += ' ' + t.content
        else:
            sent_str += ' ' + t.content

    return sent_str


def format_to_csv(sentences):
    output = []
    for sent in sentences:
        sent_str = get_sent_str(sent[1])
        output.append((sent[0],sent_str))

    out = '\n'.join([f'{a[0]},{a[1]}' for a in output])
    return out


if __name__ == '__main__':
    pipeline = BoPipeline('dummy',
                          'pybo',
                          ('pybo_sentences', sentencify),
                          format_sentences_for_lighttag,
                          pybo_profile='GMD')

    #tokens = pipeline.pipe_file('lighttag/totag/mdzangs_blun.txt', 'lighttag/toupload')
    #in_str = 'འདི་ལ་ཡང་གཟུང་བའི་ཆ་ཡོད་ན་ཤེས་པ་ཡོད་ལ་མེད་ན་མེད་དེ། དེ་ལྟ་བས་ན་ལྷན་ཅིག་འབྱུང་བ་དེ་གཉིས་ཀྱང་རྒྱུ་དང་རྒྱུ་དང་ལྡན་པ་ཉིད་དུ་འགྲུབ་པོ། །གཏན་ཚིགས་པ་དག་ཅེས་བྱ་བ་ནི་གང་དག་གཏན་ཚིགས་ཀྱི་ཐ་སྙད་འདོགས་པ་དེ་དག་ནི་གཏན་ཚིགས་པ་དག་སྟེ། རྟོག་གེ་བ་ཞེས་བྱ་བའི་ཐ་ཚིག་གོ། །དེ་དང་ལྡན་པ་ཉིད་ཅེས་བྱ་བ་ནི་ཡོད་པ་དང་མེད་པ་དང་ལྡན་པ་ཉིད་དོ། །རྒྱུ་དང་རྒྱུ་དང་ལྡན་པ་ཞེས་བྱ་བ་ནི་རྒྱུ་དང་འབྲས་བུ་དག་ཅེས་བྱ་བའི་དོན་ཏོ། །'
    in_str = 'ལག་པ་གཡས་པ་བརྐྱང་ནས་འདི་སྐད་ཅེས་ཁོ་བོ་ཡུན་རིང་པོ་ནས་མངོན་པར་འདོད་པ་བུའི་ངོ་མཐོང་བ་དང་། ཁོ་བོ་དང་མཐུན་པར་སྐྱེ་ཞིང་མི་མཐུན་པར་མི་སྐྱེ་བ་དང་། ཁོ་བོའི་བྱ་བ་དག་བྱེད་པ་དང་། གསོས་པས་ཕྱིར་གསོ་བ་དང་། བགོ་སྐལ་ལ་སྤྱོད་པ་དང་། ཁོ་བོའི་རིགས་རྒྱུད་རིང་དུ་གནས་པར་སྒྲུབ་པ་དང་། བདག་ཅག་ཤི་ཞིང་དུས་ལ་བབ་པ་དག་ལ་ཉུང་ངུའམ། མང་པོ་ཡང་རུང་བའི་སྦྱིན་པ་དག་བྱིན་ཞིང་བསོད་ནམས་དག་བྱས་ནས་འདི་དེ་གཉིས་གང་དུ་སྐྱེས་ཤིང་འགྲོ་བའི་རྗེས་སུ་འགྲོ་བར་གྱུར་ཅིག་ཅེས་མིང་གིས་ཡོན་སྔོ་བ་བྱེད་པར་གྱུར་ཅིག་ཅེས་ཆེད་དུ་བརྗོད་པ་ཆེད་དུ་རྗོད་པར་བྱེད་དོ། །དེ་ལ་སེམས་ཅན་ཞུགས་པར་རིག་ནས*་འདི་ལྟ་སྟེ།'
    print(pipeline.pipe_str(in_str))
    print('ok')