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
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
"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))
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')