OpenPecha / Tib-word-gathering

MIT License
0 stars 0 forks source link

MT0029: Gather tibetan word segmented data ( MM24 ) #1

Open jim-gyas opened 2 months ago

jim-gyas commented 2 months ago

Description We want all the opensource Tibetan word segmented data and save it in a standard format. The format should be:

[
   {
     'source': 'བོད་ཀྱི་གླུ་གར་རོལ་དབྱངས་ལ་གཞི་རྩའི་ཐོག་ནས་དབྱེ་སྣ་ག་ཚོད་ཡོད་དམ།',
     'target':'བོད་ ཀྱི་ གླུ་གར་ རོལ་དབྱངས་ ལ་ གཞི་རྩ འི་ ཐོག་ ནས་ དབྱེ་སྣ་ ག་ཚོད་ ཡོད་ དམ།,
  },
   {
     'source': ' ',
     'target': '',
  },
 ......
]

Here are some opensource data we have found.

@jim-gyas kindly search for more of such segmented data by checking through research paper on tibetan word segmentation Have found another segmented data

DeDuplication Repo: https://github.com/OpenPecha/DeDuplication

Subtask:

jim-gyas commented 2 months ago

SegPos Dataset

p1 ༄༅ ། ། <utt>
ཕྱག་རྒྱ་ ཆེན་པོ་ ལྷན་ ཅིག་ སྐྱེས་ སྦྱོར་ ཟབ་ དོན་ དོན་ གྱི་ ཆུ་བོ་ སྐལ་ལྡན་ གྱི་ གདུལ་བྱ འི་ p2 ཡིད་ མཚོ ར་ འཇུག་པ འི་ འབབ་སྟེགས་ མྱུར་ བདེ་ ལམ་ གྱི་ སྙིང་པོ་ གྲུབ་ཐོབ་ བརྒྱུད་པ འི་ ཞལ་ལུང་ ཞེས་ བྱ་བ་ བཞུགས་ སོ ། ། <utt>
༄༅ ། ། <utt>
ན་མོ་ མཧཱ་ གུ་ རུ་ བཛྲེ་ ཤྭ་ ར་མ་ཏི་ རཏྣ་ཌཱ་ཀི་ནཱི་ ཛྭ་ ལ་ ས་ མ་ བ་ར་ སརྦ་ བི་ར་ ཡོ་ གི་ ནཱི་ ཡེ ། <utt>
ཆོས་རྗེ་ བླ་མ་ དེ་བཞིན་གཤེགས་པ་ ཀུན་ མཁྱེན་ དཔའ་བོ འི་ ཞབས་ ལ་ ཕྱག་ འཚལ་ ལོ ། ། <utt>
ཁྱབ་བདག་ རྡོ་རྗེ་ རྡུལ་བྲལ་ སྤང་ མིན་ དུས་ ཀྱི་ རྣམ་དབྱེ ར་ མེད་ ཆོས་སྐྱོབ་པ་ མཆོག་ དེ་ དང་པོ འི་ མཚན ། ། <utt>
ཇི་ ལྟ ར་ སྣང་ དངོས་ ཉིད་ ལས་ གཞན་ དེ་ རབ་ ཕྲ འི་ ཆ་ རྡུལ་ མིན་ ཕྱི ར་ མངོན་སུམ་ ཉིད་ གྱུར་ ཟབ་ རྒྱས་ དབྱིངས ། ། <utt>
དེ་ ཆོས་ ཡོད་མེད་ མིན་ གཉིས་ གཞན་ མིན་ བློ ས་ མཚོན་ མངོན་པ ར་ ཤེས་ ལྔ ས་ ཀྱང་ མིན་ ཆེས་ གསང་ མཆོག་ གི་ སྐུ ། ། <utt>
ཁ་སྦྱོར་ བདེ་ རྒྱས་ བདེ་གཤེགས་ སྤྲོ་ མཛད་ ལྷན་ སྐྱེས་ བླ་མ་ བདག་ སྙིང་ དབུས་ གནས་ གཉིས་ མེད་ ཕྱག་ གིས་ མཆོད ། ། <utt>
བླ་མེད་ གསང་དོན་ སྲིད་ཞི་མཉམ་སྦྱོར་ ཞི་བ་ དམ་པ འི་ ཆོས ། ། <utt>
གང་ གིས་ དྲིན་ གསལ་ བདག་ བློ ར་ ཉེར་ སྣང་ ཆ་ ཤས་ མྱོང་ དོན་ འདི ། ། <utt>
སྐྱེས་བུ་ བློ་གྲོས་ ལྡན་ མིན་ རྗེས་དཔག་ སྤང་ བྱེད་ རབ་གསལ་ ཚིག ། <utt>
མངོན་ སྤྲོ་ གང་ གིས་ སྲིད་ རྒྱུད་ ཡེ་ཤེས་ མཆོག་ ཏུ་ སྣང་བྱེད་ འཚལ ། ། <utt>
༈ དེ་ ཡང་ དུས་ གསུམ་ གྱི་ བདེ་བ ར་ གཤེགས་པ་ ཐམས་ཅད་ ཀྱི་ འབྱུང་ གནས ། <utt>
རི་རབ་ རྡུལ་ སྙེད་ ཀྱི་ དཔའ་བོ་ དང་ རྣལ་འབྱོར་མ་ རྣམས་ ཀྱི་ ཡབ་ཡུམ་ གསང་བ་ ལས་ མཆོག་ ཏུ་ གསང་བ འི་ ལྷན་ ཅིག་ སྐྱེས་པ་ ཡབ་ཡུམ་ དེ་ ཉིད་ ནི ། <utt>
སྒྲིབ་ གསུམ་ བདུད་ སྡེ འི་ དཔུང་ཚོགས་ ལ་ ཆེས་ ཆེ ར་ རབ་ ཏུ་ ཁྲོས་ ཤིང་ ། <utt>
མཆོག་ ཏུ་ མི་ འགྱུར་བ འི་ བདེ་བ་ ཆེན་པོ ས་ ཡོངས་ སུ་ གང་བ ། <utt>
གང་ དང་ གང་ ལ འང་ ལྷན་ ཅིག་ སྐྱེས་པ ར་ ལྷང་ངེ་ ལྷན་ནེ་ ལྷམ་ མེར་ བཞུགས་པ འོ ། ། <utt>
དེ་ ཉིད་ ཀྱི་ དོན་ ཟབ་མོ་ མངོན་ དུ་ ཕྱུང་བ ར་ མཛད་པ་ ཨོ་ རྒྱན་ ཆོས་སྐུ་ མཁའ་འགྲོ་མ འི་ བཀའ་ རྣལ་འབྱོར་ གྱི་ དབང་ཕྱུག་ ཏཻ་ ལོ་པ་ ཆེན་པོ་ ནས་ རིམ་པ་ བཞིན་ བཀའ་ བརྒྱུད་ ཀྱི་ བླ་མ་ རྣམས་ ཟག་མེད་ བདེ་བ་ ཆེན་པོ འི་ དབྱིངས་ སུ ། <utt>
ལྷན་ ཅིག་ སྐྱེས་པ་ འགྱུར་མེད་ རྡོ་རྗེ འི་ སྐུ་ བརྙེས་པ ར་ གྱུར་པ འི་ སྙན་བརྒྱུད་ ཞལ་ གྱི་ གདམས་པ་ ཕྱག་རྒྱ་ ཆེན་པོ་ ལྷན་ ཅིག་ སྐྱེས་ སྦྱོར་ གྱི་ གདམས་པ་ བྱ་བ་ ཞིག་ སྟོན་པ ར་ བྱེད་པ་ ཡིན་ ཏེ ། <utt>

Jsonl Format

[
  {
    "source": "༄༅།།",
    "target": "༄༅ ། །"
  },
  {
    "source": "ཕྱག་རྒྱ་ཆེན་པོ་ལྷན་ཅིག་སྐྱེས་སྦྱོར་ཟབ་དོན་དོན་གྱི་ཆུ་བོ་སྐལ་ལྡན་གྱི་གདུལ་བྱའི་",
    "target": "ཕྱག་རྒྱ་ ཆེན་པོ་ ལྷན་ ཅིག་ སྐྱེས་ སྦྱོར་ ཟབ་ དོན་ དོན་ གྱི་ ཆུ་བོ་ སྐལ་ལྡན་ གྱི་ གདུལ་བྱ འི་"
  },
  {
    "source": "ཡིད་མཚོར་འཇུག་པའི་འབབ་སྟེགས་མྱུར་བདེ་ལམ་གྱི་སྙིང་པོ་གྲུབ་ཐོབ་བརྒྱུད་པའི་ཞལ་ལུང་ཞེས་བྱ་བ་བཞུགས་སོ།།",
    "target": "ཡིད་ མཚོ ར་ འཇུག་པ འི་ འབབ་སྟེགས་ མྱུར་ བདེ་ ལམ་ གྱི་ སྙིང་པོ་ གྲུབ་ཐོབ་ བརྒྱུད་པ འི་ ཞལ་ལུང་ ཞེས་ བྱ་བ་ བཞུགས་ སོ ། །"
  },
  {
    "source": "༄༅།།",
    "target": "༄༅ ། །"
  },
  {
    "source": "ན་མོ་མཧཱ་གུ་རུ་བཛྲེ་ཤྭ་ར་མ་ཏི་རཏྣ་ཌཱ་ཀི་ནཱི་ཛྭ་ལ་ས་མ་བ་ར་སརྦ་བི་ར་ཡོ་གི་ནཱི་ཡེ།",
    "target": "ན་མོ་ མཧཱ་ གུ་ རུ་ བཛྲེ་ ཤྭ་ ར་མ་ཏི་ རཏྣ་ཌཱ་ཀི་ནཱི་ ཛྭ་ ལ་ ས་ མ་ བ་ར་ སརྦ་ བི་ར་ ཡོ་ གི་ ནཱི་ ཡེ །"
  },

Classical Tibetan Segment

# sent_id = bu_ston:001a:T1
# text = བདེ་བར་གཤེགས་པའི་བསྟན་བའི་གསལ་བྱེད་ཆོས་ཀྱི་འབྱུང་གནས་གསུང་རབ་རིན་པོ་ཆེའི་མཛོད་ཅེས་བྱ་བ།
1   བདེ་བ   བདེ་བ་  VERB    _   VerbForm=Vnoun  0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T1
2   ར་  དུ་√case    ADP _   Case=Ter    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T2
3   གཤེགས་པ གཤེགས་  VERB    _   VerbForm=Vnoun  0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T3
4   འི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T4
5   བསྟན་བ  སྟོན་   VERB    _   Tense=Fut|VerbForm=Vnoun    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T5
6   འི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T6
7   གསལ་བྱེད་ཆོས་   གསལ་བྱེད་ཆོས་   NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T7
8   ཀྱི་    གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T8
9   འབྱུང་གནས་གསུང་རབ་  འབྱུང་གནས་གསུང་རབ་  NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T9
10  རིན་པོ་ཆེ   རིན་པོ་ཆེ་  ADJ _   _   0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T10
11  འི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T11
12  མཛོད་   མཛོད་   NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T12
13  ཅེས་    ཅེས་    VERB    _   Mood=Qot    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T13
14  བྱ་བ    བྱེད་   VERB    _   Tense=Fut|VerbForm=Vnoun    0   root    _   SpaceAfter=No|Tokenid=bu_ston:001a:T14
15  །   །   PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=bu_ston:001a:T15

Json Format

[
  {
    "source": "བདེ་བར་གཤེགས་པའི་བསྟན་བའི་གསལ་བྱེད་ཆོས་ཀྱི་འབྱུང་གནས་གསུང་རབ་རིན་པོ་ཆེའི་མཛོད་ཅེས་བྱ་བ།",
    "target": "བདེ་བ ར་ གཤེགས་པ འི་ བསྟན་བ འི་ གསལ་བྱེད་ཆོས་ ཀྱི་ འབྱུང་གནས་གསུང་རབ་ རིན་པོ་ཆེ འི་ མཛོད་ ཅེས་ བྱ་བ །"
  },
  {
    "source": "བཅོམ་ལྡན་འདས་ཤཱཀྱ་སེང་གེ་ལ་ཕྱག་འཚལ་ལོ།།",
    "target": "བཅོམ་ལྡན་འདས་ ཤཱཀྱ་སེང་གེ་ ལ་ ཕྱག་ འཚལ་ ལོ ། །"
  },
  {
    "source": "གང་ཞིག་ཐུགས་བསྐྱེད་དགེ་ཚོགས་བདུད་རྩིའི་ཟས་ཅན་ལས་བྱུང་བརྣག་དཀའི་བཟོད་པས་གཟི་དཔལ་འབར་བ།།",
    "target": "གང་ ཞིག་ ཐུགས་བསྐྱེད་དགེ་ཚོགས་བདུད་རྩི འི་ ཟས་ཅན་ ལས་ བྱུང་ བརྣག་དཀ འི་ བཟོད་པ ས་ གཟི་དཔལ་ འབར་བ ། །"
  },
jim-gyas commented 2 months ago

Evaluation Data Set of Word Segmentation Format

ང་ཚོ/ས་/གདུང་སེམས་/དྲག་པོ/ས་/ཁོང་/ཉིད་/ལ་/མྱ་ངན་ཞུ་བ་/དང་/ཆབས་ཅིག་/ཨ་དཀོན་/རིན་པོ་ཆེ/ས་/བོད་ཡུལ་/དུ་/མཛད་འཕྲིན་/གནང་ཚུལ་/རགས་ཙམ་/མཚམས་སྦྱོར་/ཞུ/།/
དེ་ཡང་/ཁྱོན་/བོད་ལྗོངས་/ས་གནས་/བཞི་བཅུ་/ཞེ་བདུན་/ལ་/བཤད་གྲྭ་/བརྒྱད/།/ དགེ་རྒན་/སློབ་གྲྭ་/གཉིས/།/ གསོ་རིག་/སློབ་གྲྭ་/གསུམ/།/ དྭ་ཕྲུག་/སློབ་གྲྭ་ཆུང་འབྲིང་/དག་/གི་/ཕོགས་དངུལ་/གནང་བ་/དང་/།/
ས་ཁུལ་/ཁག་/གཉིས་/སུ་/དྲོད་ཁང་/གཉིས་/བསྐྲུན་/ནས་/སྔོ་ཚལ་/འདེབས་འཛུགས་/རྟེན་གཞི་/བཙུགས་པ་/དང་/།/
བོད་ལྗོངས་/གསོ་རིག་/སློབ་གྲྭ་ཆེན་མོ/ར/།/ སྡེ་དགེ/།/ འདའ་/པ/།/ ཆབ་མདོ་/སོགས་/ནས་/ཟབ་སྦྱོང་/མཛད་པ/འི་/སློབ་མ་/བཞི་བཅུ་/ཙམ་/ལ་/སློབ་ཡོན་/དང་/ཟས་/རིན་/ཁང་གླ་/བཅས་/གནང་/།/
བོད་/ཀྱི་/གསོ་རིག་/བརྒྱུད་འཛིན་/དང་/དར་སྤེལ་/ཡོང་བ/འི་/ཆེད་དུ་/མཁན་ཆེན་/ཚེ་རྣམ་/རིན་པོ་ཆེ/ས་/གཙོས་/བོད་ལྗོངས་/སྨན་རྩིས་ཁང་/གི་/སྨན་པ་/མཁས་པ་/ཉི་ཤུ་/ནས་/སུམ་ཅུ/འི་/བར་/རྩ་འཛུགས་/བྱས་ནས་/དགུན་ཟླ་གསུམ་/གྱི་/རིང་/ལ་/རྒྱུད་བཞི/འི་/འགྲེལ་བ་/བརྩམ་/རྒྱུ/།/ མན་ངག་/ཟབ་མོ/འི་/སློབ་སྦྱོང་/གནང་བ/འི་/མཐུན་རྐྱེན་/གྱི་/ཕོགས་དངུལ་/དང་/།/ གསོ་རིག་/བསྟན་བཅོས་/རྣམས་/ཀྱི་/དཀར་ཆག་/བསྒྲིག་/རྒྱུ་/བཅས་/ཀྱི་/རོགས་དངུལ་/གནང་བ/ར་/མཛད་/དོ/།།/
སི་ཁྲོན་/ཞིང་ཆེན་/ལ/།/ སློབ་གྲྭ་/ཞེ་བདུན/།/ སློབ་མ་/གྲངས་/སུམ་སྟོང་/སོ་དགུ/།/ བཤད་གྲྭ་/བཅོ་ལྔ/།
jim-gyas commented 2 months ago

Old Tibetan Corpus

# sent_id = otannals:000:T55
# text = [---]་འཁུས་ནས། སྙྀང་དྲུང་[---]་པར། མཐའ་དག་གྱང་[---]་སྣང་གློ་བ་རྀངས་ནས། ཁོ་ནའྀ་བྲན་པ་ཙབ་གྱྀམ་པོ་[---]་བཀྱོན་ཕབ་ནས་བཀུམོ།
# text_en = ... became treacherous, and at Snying-drung ... [Myang Mang-po-rje Zhang-snang bought about the submission] of all the Sum-pa also. [Then after x years when Myang Zhang-]snang became disloyal, his subject Pa-tsab [betrayed him so that Zhang-snang] was accused and put to death.
1   [---]་  [---]་  X   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T55
2   འཁུས་   འཁུ་    VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=otannals:000:T36
3   ནས  ནས་√cv  ADP _   Case=Ela    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T32
4   །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T77
5   སྙྀང་དྲུང་  སྙིང་དྲུང་  PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T33
6   [---]་པ [---]་པ་    X   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T70
7   ར   དུ་√case    ADP _   Case=Ter    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T23
8   །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T76
9   མཐའ་དག་ མཐའ་དག་ ADJ _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T34
10  གྱང་    འང་√cl  PART    _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T35
11  [---]་  [---]་  X   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T71
12  སྣང་    སྣང་    PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T37
13  གློ་བ་  གློ་བ་  NOUN    _   _   14  arg2:lvc    _   SpaceAfter=No|Tokenid=otannals:000:T69
14  རྀངས་   རིངས་   VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=otannals:000:T68
15  ནས  ནས་√cv  SCONJ   _   Case=Ela    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T17
16  །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T78
17  ཁོ་ན    ཁོ་ན་   PRON    _   PronType=Prs    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T38
18  འྀ་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T25
19  བྲན་    བྲན་    NOUN    _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T40
20  པ་ཙབ་   པ་ཙབ་   PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T39
21  གྱྀམ་པོ་    གྱིམ་པོ་    NOUN    _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T67
22  [---]་  [---]་  X   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T72
23  བཀྱོན་  བཀྱོན་  NOUN    _   _   24  arg2    _   SpaceAfter=No|Tokenid=otannals:000:T42
24  ཕབ་ འབེབས་  VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=otannals:000:T41
25  ནས་ ནས་√cv  SCONJ   _   Case=Ela    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T28
26-27   བཀུམོ   _   _   _   _   _   _   _   SpaceAfter=No
26  བཀུམ་   འགུམས་  VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=otannals:000:T43
27  མོ  འོ་√cv  PART    _   Mood=Ind    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T20
28  །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T79

# sent_id = otannals:000:T44
# text = མཁར་སྡུར་བ་བཤྀག་གོ། [---]།
# text_en = The stronghold Sdur-ba was destroyed.
1   མཁར་    མཁར་    NOUN    _   _   3   arg2    _   SpaceAfter=No|Tokenid=otannals:000:T44
2   སྡུར་བ་ སྡུར་བ་ PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T45
3   བཤྀག་   འཇིག་√2 VERB    _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T46
4   གོ  འོ་√cv  PART    _   Mood=Ind    0   root    _   SpaceAfter=No|Tokenid=otannals:000:T18
5   །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T93
6   [---]   [---]་  X   _   _   0   root    _   SpaceAfter=No|Tokenid=otannals:000:T73
7   །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otannals:000:T74

Modern Tibetan Corpora

# sent_id = conflict:001:T1
# text = “ཁུན་མིང་དོན་རྐྱེན་ལས་མི་རིགས་ས་ཁོངས་རང་སྐྱོང་གི་སྲིད་ཇུས་ལ་ཕྱིར་རྟོག་བྱེད་པ”ཞེས་པ་དེ་ནི་བརྩམས་ཆོས་ལེགས་པོ་ཞིག་ཡིན་པར་ང་རང་ཡིད་ཆེས་བརྟན་པོ་ཡོད།
# text_en = The article, “Rethinking the Policy of Regional Ethnic Autonomy in Light of the Kunming Incident” by Liu Junning is undoubtedly a thoughtful piece,
1   “ཁུན་མིང་དོན་   “ཁུན་མིང་དོན་   NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=conflict:001:T1
2   རྐྱེན་  རྐྱེན་  NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=conflict:001:T2
3   ལས་ ལས་√case    ADP _   Case=Abl    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T3
4   མི་ མི་√neg PART    _   Polarity=Neg    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T4
5   རིགས་   རིགས་   VERB    _   Tense=Fut/Pres  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T5
6   ས་  གྱིས་√case  ADP _   Case=Agn    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T6
7   ཁོངས་   ཁོངས་   NOUN    _   NounType=Rel    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T7
8   རང་ རང་√p   PRON    _   Reflex=Yes  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T8
9   སྐྱོང་  སྐྱོང་  VERB    _   Tense=Pres  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T9
10  གི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T10
11  སྲིད་   སྲིད་   NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=conflict:001:T11
12  ཇུས་    ཇུས་    PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=conflict:001:T12
13  ལ་  ལ་√case ADP _   Case=All    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T13
14  ཕྱིར་རྟོག་  ཕྱིར་རྟོག་  NOUN    _   _   15  arg2    _   SpaceAfter=No|Tokenid=conflict:001:T14
15  བྱེད་   བྱེད་   VERB    _   Tense=Pres  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T17
16  པ”ཞེས་པ་    པ”ཞེས་པ་    PRON    _   PronType=Int    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T18
17  དེ་ དེ་√d   DET _   PronType=Dem    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T19
18  ནི་ ནི་√cl  PART    _   _   0   root    _   SpaceAfter=No|Tokenid=conflict:001:T20
19  བརྩམས་  རྩོམ་   VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T21
20  ཆོས་    ཆོས་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=conflict:001:T22
21  ལེགས་པོ་    ལེགས་པོ་    ADJ _   _   0   root    _   SpaceAfter=No|Tokenid=conflict:001:T23
22  ཞིག་    ཅིག་√d  DET _   PronType=Ind    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T24
23  ཡིན་པ   ཡིན་པ་  AUX _   VerbForm=Vnoun  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T25
24  ར་  དུ་√case    ADP _   Case=Ter    0   root    _   SpaceAfter=No|Tokenid=conflict:001:T26
25  ང་  ང་√p    PRON    _   PronType=Prs    29  arg1    _   SpaceAfter=No|Tokenid=conflict:001:T27
26  རང་ རང་√p   PRON    _   Reflex=Yes  0   root    _   SpaceAfter=No|Tokenid=conflict:001:T28
27  ཡིད་    ཡིད་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=conflict:001:T29
28  ཆེས་བརྟན་པོ་    ཆེས་བརྟན་པོ་    NOUN    _   Number=Sing 29  arg2    _   SpaceAfter=No|Tokenid=conflict:001:T30
29  ཡོད ཡོད་    VERB    _   _   0   root    _   SpaceAfter=No|Tokenid=conflict:001:T31
30  །   །   PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=conflict:001:T32
jim-gyas commented 2 months ago

Test Failed in Old Tibetan Corpus

# sent_id = otchronicle:001:T80
# text = མཚོ་ཡང་མ་སྐམས་སྤང་ཡང་མྱེས་མ་ཚིག་ཅེས་བགྱིསྣ།
1   མཚོ་    མཚོ་    NOUN    _   Number=Sing 4   arg1    _   SpaceAfter=No|Tokenid=otchronicle:001:T80
2   ཡང་ འང་√cl  PART    _   _   0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T81
3   མ་  མ་√neg  PART    _   Polarity=Neg    0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T82
4   སྐམས་   སྐམ་    VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T83
5   སྤང་    སྤང་    NOUN    _   Number=Sing 10  arg2    _   SpaceAfter=No|Tokenid=otchronicle:001:T84
6   ཡང་ རྒྱུང་  PART    _   _   0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T85
7   མྱེ མེ་ NOUN    _   Number=Sing 10  arg1    _   SpaceAfter=No|Tokenid=otchronicle:001:T86
8   ས་  ས་  ADP _   Case=Agn    0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T87
9   མ་  མ་  PART    _   Polarity=Neg    0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T88
10  ཚིག་    འཚིག་   VERB    _   Tense=Past  12  argcl   _   SpaceAfter=No|Tokenid=otchronicle:001:T89
11  ཅེས་    ཅེས་√cl PART    _   Mood=Qot    0   root    _   SpaceAfter=No|Tokenid=otchronicle:001:T90
12-13   བགྱིསྣྣྟོ   _   _   _   _   _   _   _   SpaceAfter=No
12  བགྱིས་  བགྱིད་  VERB    _   Tense=Past  0   root    _   SpaceAfter=No
13  ན   ན་  SCONJ   _   Case=Loc    0   root    _   SpaceAfter=No
14  །   །་  PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=otchronicle:001:T91

Modern Tibetan Corpus

# sent_id = japanese:001:T19
# text = ཁོར་ཡུག་གི་རྐྱེན་པས་བདག་གི་མི་ཚེའི་ནང་རི་པིན་དང་། འཇར་པན། ཉི་ཧོང་བཅས་ཡུལ་གྲུ་གཅིག་ལ་མིང་འབོད་སྟངས་མི་འདྲ་བ་གསུམ་བྱུང་ལ།
# text_en = Because of my surroundings they have been three distinct ways of referring to Japan. Ri bin (རི་པིན་) from the Chinese 'Rìběn' (日本), Jar pan (འཇར་པན་) from the English 'Japan' and Nyi hong (ཉི་ཧོང་) from the Japanese 'Nihon' (日本).
1   ཁོར་ཡུག་    ཁོར་ཡུག་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T19
2   གི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T20
3   རྐྱེན་པ རྐྱེན་པ་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T21
4   ས་  གྱིས་√case  ADP _   Case=Agn    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T22
5   བདག་    བདག་√p  PRON    _   PronType=Prs    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T23
6   གི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T24
7   མི་ མི་ NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T25
8   ཚེ  ཚེ་ NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T26
9   འི་ གྱི་√case   ADP _   Case=Gen    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T27
10  ནང་ ནང་ NOUN    _   NounType=Rel    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T28
11  རི་པིན་ རི་པིན་ NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T29
12  དང་ དང་√case    ADP _   Case=Com    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T30
13  །   །   PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=japanese:001:T31
14  འཇར་    འཇར་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T33
15  པན  པན་ PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=japanese:001:T34
16  །   །   PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=japanese:001:T35
17  ཉི་ཧོང་ ཉི་ཧོང་ NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T37
18  བཅས་    བཅས་    VERB    _   _   0   root    _   SpaceAfter=No|Tokenid=japanese:001:T38
19  ཡུལ་    ཡུལ་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T39
20  གྲུ་གཅིག་   གྲུ་གཅིག་   PROPN   _   _   0   root    _   SpaceAfter=No|Tokenid=japanese:001:T40
21  ལ་  ལ་√case ADP _   Case=All    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T41
22  མིང་    མིང་    NOUN    _   Number=Sing 0   root    _   SpaceAfter=No|Tokenid=japanese:001:T42
23  འབོད་སྟངས་  འབོད་སྟངས་  NOUN    _   Number=Sing 27  arg2    _   SpaceAfter=No|Tokenid=japanese:001:T43
24  མི་ མི་√neg PART    _   Polarity=Neg    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T44
25  འདྲ་བ་  འདྲ་བ་  NOUN    _   _   0   root    _   SpaceAfter=No|Tokenid=japanese:001:T12
26  གསུམ་   གསུམ་   NUM _   NumType=Card|NumForm=Word   0   root    _   SpaceAfter=No|Tokenid=japanese:001:T46
27  བྱུང་   འབྱུང་  VERB    _   Tense=Past  0   root    _   SpaceAfter=No|Tokenid=japanese:001:T47
28  ལ   ལ་√cv   SCONJ   _   Case=All    0   root    _   SpaceAfter=No|Tokenid=japanese:001:T48
29  །   །   PUNCT   _   _   0   root    _   SpaceAfter=Yes|Tokenid=japanese:001:T49

Json File

[
  {
    "source": "ཁོར་ཡུག་གི་རྐྱེན་པས་བདག་གི་མི་ཚེའི་ནང་རི་པིན་དང་། འཇར་པན། ཉི་ཧོང་བཅས་ཡུལ་གྲུ་གཅིག་ལ་མིང་འབོད་སྟངས་མི་འདྲ་བ་གསུམ་བྱུང་ལ།",
    "target": "ཁོར་ཡུག་ གི་ རྐྱེན་པ ས་ བདག་ གི་ མི་ ཚེ འི་ ནང་ རི་པིན་ དང་ ། འཇར་ པན ། ཉི་ཧོང་ བཅས་ ཡུལ་ གྲུ་གཅིག་ ལ་ མིང་ འབོད་སྟངས་ མི་ འདྲ་བ་ གསུམ་ བྱུང་ ལ །"
  },
  {
    "source": "དེང་གི་དུས་འདིར་ཉི་ཧོང་ཞེས་པ་ཅུང་འབོད་བདེ་བར་སྣང་།",
    "target": "དེང་ གི་ དུས་ འདི ར་ ཉི་ཧོང་ ཞེས་པ་ ཅུང་ འབོད་ བདེ་བ ར་ སྣང་ །"
  },
  {
    "source": "༢༠༠༩ལོའི་ཟླ་བ་བཅུ་གཉིས་པར། ང་རང་ཉི་ཧོང་དུ་སྤྲོ་འཆམ་ལ་སོང་བ་དང་།",
    "target": "༢༠༠༩ ལོའི་ ཟླ་བ་ བཅུ་ གཉིས་པ ར ། ང་ རང་ ཉི་ཧོང་ དུ་ སྤྲོ་འཆམ་ ལ་ སོང་བ་ དང་ །"
  },
jim-gyas commented 1 month ago
Screenshot 2024-09-26 at 12 07 55 PM
jim-gyas commented 1 month ago

@TenzinGayche, this is my current code for deduplication, but I'm encountering the following error.

def create_deduplicated_json_file(input_file, output_file, chunk_size=1000):
    """
    Reads a JSON file, deduplicates the 'source' texts using MinHash and LSH from datasketch,
    and creates a HuggingFace dataset with 'source', 'target', and 'filename' columns.
    The deduplicated dataset is saved to a JSON file in chunks to reduce memory usage.

    Args:
        input_file (str): Path to the input JSON file.
        output_file (str): Output file path for the deduplicated dataset.
        chunk_size (int): Number of entries to process at a time to reduce memory usage.

    Returns:
        Dataset: A HuggingFace dataset containing deduplicated 'source', 'target', and file names.
    """
    # Load the JSON data from the file in chunks
    with open(input_file, 'r', encoding='utf-8') as f:
        json_data = json.load(f)

    unique_sources = []
    unique_targets = []
    unique_file_names = []
    duplicated_entries = []
    lsh = datasketch.MinHashLSH(threshold=0.9, num_perm=128)
    minhashes = {}

    for start_idx in tqdm(range(0, len(json_data), chunk_size), desc="Processing JSON data in chunks"):
        chunk = json_data[start_idx:start_idx + chunk_size]

        for idx, entry in enumerate(chunk):
            source_text = entry['source']
            target_text = entry['target']
            file_name = entry['filename']  # Use the filename provided in the JSON

            # Create a MinHash object for the source text
            minhash = datasketch.MinHash(num_perm=128)
            for word in set(source_text.split()):
                minhash.update(word.encode('utf8'))

            # Check for duplicates in LSH index
            if not lsh.query(minhash):
                # Insert unique source into LSH index
                lsh.insert(start_idx + idx, minhash)
                minhashes[start_idx + idx] = minhash
                unique_sources.append(source_text)
                unique_targets.append(target_text)
                unique_file_names.append(file_name)
            else:
                duplicated_entries.append(file_name)  # Track the duplicate file

    # Create a HuggingFace dataset
    dataset_dict = {
        'source': unique_sources,
        'target': unique_targets,
        'file_name': unique_file_names
    }
    dataset = Dataset.from_dict(dataset_dict)

    # Save deduplicated dataset to JSON file
    with open(output_file, 'w', encoding='utf-8') as f:
        json.dump(dataset_dict, f, ensure_ascii=False, indent=4)

    # Print out duplicated fields
    if duplicated_entries:
        print(f"Duplicated entries (files): {duplicated_entries}")
    else:
        print("No duplicates found.")

    return

Error:

/opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python3.12/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 1 leaked semaphore objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '