vecxoz's picture
Upload folder using huggingface_hub
386532a verified
Raw
History Blame Contribute Delete
4.11 kB
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
import os
import re
import pandas as pd
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('--input_dir', default='./', type=str, help='Input directory')
parser.add_argument('--output_dir', default='./kenlm_corpus', type=str, help='Output directory')
args = parser.parse_args()
for a in [a for a in vars(args) if '__' not in a]: print('%-25s %s' % (a, vars(args)[a]))
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
bracketed = re.compile(r"\[[^\]]+\]")
unintell_paren = re.compile(r"\(\?+\)")
repl_punc = re.compile('[,?¿¡!";:]+')
multispace = re.compile(" +")
def clean(t):
"""
Official cleaning function
"""
t = re.sub(bracketed, " ", t)
t = re.sub(unintell_paren, " ", t)
t = t.replace(" ... ", " ")
t = t.replace("#x27;", "'")
t = re.sub(repl_punc, " ", t)
t = t.replace("...", "!ELLIPSIS!").replace(".", " ").replace("!ELLIPSIS!", "...")
t = re.sub(multispace, " ", t)
return t
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
os.makedirs(args.output_dir, exist_ok=True)
langs_general = ['aln', 'bew', 'bxk', 'cgg', 'el-CY', 'hch',
'kcn', 'koo', 'led', 'lke', 'lth', 'meh', 'mmc',
'pne', 'ruc', 'rwm', 'sco', 'tob', 'top', 'ttj', 'ukv']
langs_unseen = ['ady', 'bas', 'kbd', 'qxp', 'ush']
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
for lang in langs_general:
corpus_df = pd.read_csv(os.path.join(args.input_dir, 'mcv-sps-st-09-2025/sps-corpus-1.0-2025-09-05-%s/ss-corpus-%s.tsv' % (lang, lang)), sep='\t')
print('Lang: %s Size: %d' % (lang, len(corpus_df)))
selector_no_trans = corpus_df['transcription'].isnull()
corpus_df = corpus_df[~selector_no_trans]
selector_zero_len_trans = corpus_df['transcription'].map(len) == 0
corpus_df = corpus_df[~selector_zero_len_trans]
corpus_df['transcription'] = corpus_df['transcription'].map(clean)
with open(os.path.join(args.output_dir, '%s.txt' % lang), 'wt', encoding='utf-8') as f:
for line in corpus_df['transcription'].values:
f.write(line + '\n')
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
for lang in langs_unseen:
train_df = pd.read_csv(os.path.join(args.input_dir, 'cv-corpus-23.0-2025-09-05/%s/train.tsv' % lang), sep='\t')
dev_df = pd.read_csv(os.path.join(args.input_dir, 'cv-corpus-23.0-2025-09-05/%s/dev.tsv' % lang), sep='\t')
test_df = pd.read_csv(os.path.join(args.input_dir, 'cv-corpus-23.0-2025-09-05/%s/test.tsv' % lang), sep='\t')
corpus_df = pd.concat([train_df, dev_df, test_df])
corpus_df['transcription'] = corpus_df['sentence'] # just for compat
print('Lang: %s Size: %d' % (lang, len(corpus_df)))
selector_no_trans = corpus_df['transcription'].isnull()
corpus_df = corpus_df[~selector_no_trans]
selector_zero_len_trans = corpus_df['transcription'].map(len) == 0
corpus_df = corpus_df[~selector_zero_len_trans]
corpus_df['transcription'] = corpus_df['transcription'].map(clean)
with open(os.path.join(args.output_dir, '%s.txt' % lang), 'wt', encoding='utf-8') as f:
for line in corpus_df['transcription'].values:
f.write(line + '\n')
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------